質問編集履歴

1

習作のバッチファイルを作りました。

2021/06/06 04:54

投稿

sarinaga
sarinaga

スコア7

test CHANGED
File without changes
test CHANGED
@@ -127,3 +127,145 @@
127
127
 
128
128
 
129
129
  よろしくお願いします。
130
+
131
+
132
+
133
+ ### 試したこと(その2)
134
+
135
+ どちらかというと、フォルダ名が重複したときにそれを統合してくれるファイル名一括変換ソフトを探すのが目的だったのにどうしてこうなった。
136
+
137
+
138
+
139
+ 以下は私が作ったバッチファイルですが、まあ、このくらいなら書けるのです・・・・。
140
+
141
+ まあ、内容としては不完全でして`newren hoge* hoge`としたときに以下のようには処理をしてはくれません。
142
+
143
+ ```
144
+
145
+ hoge -> hoge
146
+
147
+ hoge1 -> hoge
148
+
149
+ hoge2 -> hoge
150
+
151
+ hoge3 -> hoge
152
+
153
+ hoge4 -> hoge
154
+
155
+ ```
156
+
157
+
158
+
159
+ ```
160
+
161
+ @echo off
162
+
163
+ echo.
164
+
165
+ rem %1=処理対象ディレクトリ
166
+
167
+ rem %2=置換する文字
168
+
169
+ rem %3=置換された後の文字
170
+
171
+
172
+
173
+ if "%2"=="" (
174
+
175
+ echo 引数は2つ必要です.
176
+
177
+ echo.
178
+
179
+ echo newren [作業対象ディレクトリ] [置換前文字列] ^([置換後文字列]^)
180
+
181
+ echo 置換後文字列が省略されたときは, 置換前文字列を消去します.
182
+
183
+ echo.
184
+
185
+ exit /b 1
186
+
187
+ )
188
+
189
+
190
+
191
+ set base=%1
192
+
193
+ set before=%2
194
+
195
+ set after=%3
196
+
197
+
198
+
199
+ echo 作業対象ディレクトリ: %base%
200
+
201
+ echo 置換前文字列: %before%
202
+
203
+ echo 置換後文字列: %after%
204
+
205
+ echo.
206
+
207
+
208
+
209
+ set flag=0
210
+
211
+ set exists=0
212
+
213
+
214
+
215
+ setlocal enabledelayedexpansion
216
+
217
+ for /d %%a in (%base%*%before%*) do (
218
+
219
+ set from=%%a
220
+
221
+ set to=!from:%before%=%after%!
222
+
223
+ if !flag!==0 (
224
+
225
+ echo 以下のようにフォルダ名が置換されます.
226
+
227
+ echo 変更前ディレクトリ: !from!
228
+
229
+ echo 変更後ディレクトリ: !to!
230
+
231
+ echo 中止する場合はCTRL+C
232
+
233
+ pause
234
+
235
+ set flag==1
236
+
237
+ )
238
+
239
+
240
+
241
+ echo フォルダ名変更: !from! -^> !to!
242
+
243
+ If not exist !to! mkdir !to! > NUL
244
+
245
+ move !from!* !to! > NUL
246
+
247
+ if %errorlevel%==0 rmdir /s /q !from! > NUL
248
+
249
+ set exists=1
250
+
251
+
252
+
253
+ )
254
+
255
+
256
+
257
+ if !exists!==0 (
258
+
259
+ echo フォルダは1つもありません.
260
+
261
+ )
262
+
263
+
264
+
265
+ endlocal
266
+
267
+
268
+
269
+ echo.
270
+
271
+ ```