1

for ループを使用してファイルの名前を変更しようとしています

::@Echo Off
setlocal enableDelayedExpansion
::Set Date
set mydate=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%
::Rename file
for %%F in (D:\Data\*.bak) do (
    ren %%F D:\Data\prod_live_Full_%mydate%0000.Lts.bak
)

無効なコマンド エラーが発生し続けます。どんな助けでも大歓迎です。

4

2 に答える 2

0

あなたの日付形式はわかりませんが、日付カットのロジックが正しくない場合 (私の PC では、スペイン語では機能しません)、mydate 変数にスラッシュを含めることができますが、これはファイル名では許可されていません。

複数のファイルがある場合、すべての名前変更操作が同じファイル名を使用しようとするため、ren は失敗します。

于 2013-10-18T16:11:37.340 に答える
0

ディレクトリ内のファイルを変更する場合dirは、 の動的ファイル リストではなく、 の静的ファイル リストを使用しますfor。そうしないと、無限ループに陥ります。

@echo Off
setlocal
set "mydate=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%"
pushd "D:\Data\" && for /f "delims=" %%A in ('dir /a-d /b *.bak') do (
    ren "%%~fA" "prod_live_Full_%mydate%0000.Lts.bak"
)
popd
endlocal
exit /b 0

エラーは、renコマンドの 2 番目のパラメーターが原因で発生しました。フルパスとファイル名ではなく、新しいファイル名のみが必要です。コマンドはrenファイルを移動できません。

于 2013-10-18T16:07:24.313 に答える