特定の文字列を持つファイルを一括でリネームするバッチファイルを作成しております。
そこで、下記のバッチファイルを使用しているのですが、
実際に実行すると本来ほしい結果がでず苦慮しております。
記述方法が間違っているのか、アドバイスをお願い致します。
やりたいこととして
同じフォルダ内にあるCSVファイル名を変更したい
望む出力結果例
a_yyymmdd.csv→aaa_yyymmdd.csv
b_yyymmdd.csv→bbb_yyymmdd.csv
yyyymmddは変更せず前方のa,bのみを変更したい。
上記を実現するバッチを以下のように作成しましたがforのループが旨く行かず
a.csv→aaaccc.csvとなります。
exit /b で:changeのfor文を戻し:change2の処理を実行する構文を想定しておりますが
うまく行かずアドバイスをお願い致します。
echo off SET /P ANSWER="実行しますか (Y/N)?" if /i {%ANSWER%}=={y} (goto :yes) if /i {%ANSWER%}=={yes} (goto :yes) :no echo "No が選択されました" goto exitlabel :yes echo "Yesが選択されました" echo 処理開始 for %%f in (*.csv) do call :change %%f exit /b :change set fileName=%1 set fileName=%fileName:a=aaa% ren %1 %fileName% for %%f in (*.csv) do call :change2 %%f :change2 set fileName=%1 set fileName=%fileName:c=ccc% ren %1 %fileName% echo 完了しました! Enterを押して終了してください。 pause > nul exit
回答3件
あなたの回答
tips
プレビュー