回答編集履歴

5

各行の先頭に差し戻し。

2016/04/06 05:57

投稿

umed0025
umed0025

スコア851

test CHANGED
@@ -26,11 +26,9 @@
26
26
 
27
27
  set TEMP_FILE=!TARGET_FILE!.tmp
28
28
 
29
- echo !TARGET_FILE! > "!TEMP_FILE!"
30
-
31
29
  for /f "usebackq delims=" %%B in ("!TARGET_FILE!") do (
32
30
 
33
- echo %%B >> "!TEMP_FILE!"
31
+ echo !TARGET_FILE! %%B >> "!TEMP_FILE!"
34
32
 
35
33
  )
36
34
 

4

修正

2016/04/06 05:57

投稿

umed0025
umed0025

スコア851

test CHANGED
@@ -26,9 +26,11 @@
26
26
 
27
27
  set TEMP_FILE=!TARGET_FILE!.tmp
28
28
 
29
+ echo !TARGET_FILE! > "!TEMP_FILE!"
30
+
29
31
  for /f "usebackq delims=" %%B in ("!TARGET_FILE!") do (
30
32
 
31
- echo !TARGET_FILE! %%B >> "!TEMP_FILE!"
33
+ echo %%B >> "!TEMP_FILE!"
32
34
 
33
35
  )
34
36
 

3

使用解釈誤りのため修正

2016/04/06 03:48

投稿

umed0025
umed0025

スコア851

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

2

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

2016/04/06 03:45

投稿

umed0025
umed0025

スコア851

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

1

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

2016/04/06 02:30

投稿

umed0025
umed0025

スコア851

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  rem 対象パス
12
12
 
13
- set TARGET_PATH=D:\Temp\201604xx\rename_bat\foo
13
+ set TARGET_PATH=C:\foo\ba zzzzz
14
14
 
15
15
  rem 先頭に入れる文字
16
16
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- for /f "usebackq tokens=*" %%A in (`dir /B %TARGET_PATH%`) do (
21
+ for /f "usebackq tokens=*" %%A in (`dir /B "%TARGET_PATH%"`) do (
22
22
 
23
23
  ren "%TARGET_PATH%\%%A" "%FILE_PREFIX%%%A"
24
24