質問編集履歴
1
習作のバッチファイルを作りました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -62,4 +62,75 @@
|
|
62
62
|
```
|
63
63
|
しかし「フォルダー名を大量に、ワイルドカードとか、置換機能を使って直したい」となるとファイル名一括変換ツールかなと。次善策がバッチやpowershellの利用となるところです。bashなら簡単だよという話があればそれでもかまいません。
|
64
64
|
|
65
|
-
よろしくお願いします。
|
65
|
+
よろしくお願いします。
|
66
|
+
|
67
|
+
### 試したこと(その2)
|
68
|
+
どちらかというと、フォルダ名が重複したときにそれを統合してくれるファイル名一括変換ソフトを探すのが目的だったのにどうしてこうなった。
|
69
|
+
|
70
|
+
以下は私が作ったバッチファイルですが、まあ、このくらいなら書けるのです・・・・。
|
71
|
+
まあ、内容としては不完全でして`newren hoge* hoge`としたときに以下のようには処理をしてはくれません。
|
72
|
+
```
|
73
|
+
hoge -> hoge
|
74
|
+
hoge1 -> hoge
|
75
|
+
hoge2 -> hoge
|
76
|
+
hoge3 -> hoge
|
77
|
+
hoge4 -> hoge
|
78
|
+
```
|
79
|
+
|
80
|
+
```
|
81
|
+
@echo off
|
82
|
+
echo.
|
83
|
+
rem %1=処理対象ディレクトリ
|
84
|
+
rem %2=置換する文字
|
85
|
+
rem %3=置換された後の文字
|
86
|
+
|
87
|
+
if "%2"=="" (
|
88
|
+
echo 引数は2つ必要です.
|
89
|
+
echo.
|
90
|
+
echo newren [作業対象ディレクトリ] [置換前文字列] ^([置換後文字列]^)
|
91
|
+
echo 置換後文字列が省略されたときは, 置換前文字列を消去します.
|
92
|
+
echo.
|
93
|
+
exit /b 1
|
94
|
+
)
|
95
|
+
|
96
|
+
set base=%1
|
97
|
+
set before=%2
|
98
|
+
set after=%3
|
99
|
+
|
100
|
+
echo 作業対象ディレクトリ: %base%
|
101
|
+
echo 置換前文字列: %before%
|
102
|
+
echo 置換後文字列: %after%
|
103
|
+
echo.
|
104
|
+
|
105
|
+
set flag=0
|
106
|
+
set exists=0
|
107
|
+
|
108
|
+
setlocal enabledelayedexpansion
|
109
|
+
for /d %%a in (%base%*%before%*) do (
|
110
|
+
set from=%%a
|
111
|
+
set to=!from:%before%=%after%!
|
112
|
+
if !flag!==0 (
|
113
|
+
echo 以下のようにフォルダ名が置換されます.
|
114
|
+
echo 変更前ディレクトリ: !from!
|
115
|
+
echo 変更後ディレクトリ: !to!
|
116
|
+
echo 中止する場合はCTRL+C
|
117
|
+
pause
|
118
|
+
set flag==1
|
119
|
+
)
|
120
|
+
|
121
|
+
echo フォルダ名変更: !from! -^> !to!
|
122
|
+
If not exist !to! mkdir !to! > NUL
|
123
|
+
move !from!* !to! > NUL
|
124
|
+
if %errorlevel%==0 rmdir /s /q !from! > NUL
|
125
|
+
set exists=1
|
126
|
+
|
127
|
+
)
|
128
|
+
|
129
|
+
if !exists!==0 (
|
130
|
+
echo フォルダは1つもありません.
|
131
|
+
)
|
132
|
+
|
133
|
+
endlocal
|
134
|
+
|
135
|
+
echo.
|
136
|
+
```
|