質問するログイン新規登録

回答編集履歴

5

各行の先頭に差し戻し。

2016/04/06 05:57

投稿

umed0025
umed0025

スコア851

answer CHANGED
@@ -12,9 +12,8 @@
12
12
  for /f "usebackq tokens=*" %%A in (`dir /B`) do (
13
13
  set TARGET_FILE=%%A
14
14
  set TEMP_FILE=!TARGET_FILE!.tmp
15
- echo !TARGET_FILE! > "!TEMP_FILE!"
16
15
  for /f "usebackq delims=" %%B in ("!TARGET_FILE!") do (
17
- echo %%B >> "!TEMP_FILE!"
16
+ echo !TARGET_FILE! %%B >> "!TEMP_FILE!"
18
17
  )
19
18
  del "!TARGET_FILE!"
20
19
  ren "!TEMP_FILE!" "!TARGET_FILE!"

4

修正

2016/04/06 05:57

投稿

umed0025
umed0025

スコア851

answer CHANGED
@@ -12,8 +12,9 @@
12
12
  for /f "usebackq tokens=*" %%A in (`dir /B`) do (
13
13
  set TARGET_FILE=%%A
14
14
  set TEMP_FILE=!TARGET_FILE!.tmp
15
+ echo !TARGET_FILE! > "!TEMP_FILE!"
15
16
  for /f "usebackq delims=" %%B in ("!TARGET_FILE!") do (
16
- echo !TARGET_FILE! %%B >> "!TEMP_FILE!"
17
+ echo %%B >> "!TEMP_FILE!"
17
18
  )
18
19
  del "!TARGET_FILE!"
19
20
  ren "!TEMP_FILE!" "!TARGET_FILE!"

3

使用解釈誤りのため修正

2016/04/06 03:48

投稿

umed0025
umed0025

スコア851

answer CHANGED
@@ -1,14 +1,24 @@
1
- Windows、renを使った例。複雑な処理になるようであれば、tkturboさんもおっしゃってますが`WSH`とか`PowerShell(バージョンによる)`で組んだほうが良いです。
1
+ Windowsの場合組み方は色々あると思います。複雑な処理になるようであれば、tkturboさんもおっしゃってますが`WSH`とか`PowerShell(バージョンによる)`で組んだほうが良いです。
2
+ バッチ処理ではそのまま書き換えることは無理なので一時ファイルに出力してリネームする方法です。
3
+ エラー処理などを入れてないので参考程度に。
2
4
 
3
5
 
4
6
  ```DOS
5
7
  @echo off
8
+ setlocal enabledelayedexpansion
6
9
  rem 対象パス
7
- set TARGET_PATH=C:\foo\ba zzzzz
10
+ set TARGET_PATH=C:\foo\ba zzzzzz
8
- rem 先頭に入れる文字
11
+ cd /d "%TARGET_PATH%"
12
+ for /f "usebackq tokens=*" %%A in (`dir /B`) do (
9
- set FILE_PREFIX=BAR_
13
+ set TARGET_FILE=%%A
14
+ set TEMP_FILE=!TARGET_FILE!.tmp
15
+ for /f "usebackq delims=" %%B in ("!TARGET_FILE!") do (
16
+ echo !TARGET_FILE! %%B >> "!TEMP_FILE!"
17
+ )
18
+ del "!TARGET_FILE!"
19
+ ren "!TEMP_FILE!" "!TARGET_FILE!"
20
+ )
21
+ cd %~dp0
22
+ endlocal
10
23
 
11
- for /f "usebackq tokens=*" %%A in (`dir /B "%TARGET_PATH%"`) do (
12
- ren "%TARGET_PATH%\%%A" "%FILE_PREFIX%%%A"
13
- )
14
24
  ```

2

敬称もれ修正。失礼しました。

2016/04/06 03:45

投稿

umed0025
umed0025

スコア851

answer CHANGED
@@ -1,4 +1,4 @@
1
- Windows、renを使った例。複雑な処理になるようであれば、tkturboもおっしゃってますが`WSH`とか`PowerShell(バージョンによる)`で組んだほうが良いです。
1
+ Windows、renを使った例。複雑な処理になるようであれば、tkturboさんもおっしゃってますが`WSH`とか`PowerShell(バージョンによる)`で組んだほうが良いです。
2
2
 
3
3
 
4
4
  ```DOS

1

対象パスに空白が入る場合の考慮漏れ修正

2016/04/06 02:30

投稿

umed0025
umed0025

スコア851

answer CHANGED
@@ -4,11 +4,11 @@
4
4
  ```DOS
5
5
  @echo off
6
6
  rem 対象パス
7
- set TARGET_PATH=D:\Temp\201604xx\rename_bat\foo
7
+ set TARGET_PATH=C:\foo\ba zzzzz
8
8
  rem 先頭に入れる文字
9
9
  set FILE_PREFIX=BAR_
10
10
 
11
- for /f "usebackq tokens=*" %%A in (`dir /B %TARGET_PATH%`) do (
11
+ for /f "usebackq tokens=*" %%A in (`dir /B "%TARGET_PATH%"`) do (
12
12
  ren "%TARGET_PATH%\%%A" "%FILE_PREFIX%%%A"
13
13
  )
14
14
  ```