1

サブディレクトリからルート (ルートはコマンドが実行された場所) にファイルをコピーし、必要に応じて元のファイルをバックアップするための非常に基本的なバッチ スクリプト (元々は機能していました) を作成しました。以下は、置換を含む私のスクリプトです。コピー元のファイルのファイル%CD%\folder\名は%FILE%

set /p backup=Do you want to backup your current file? (Yes or No): 
set file=filename.cmd

if %BACKUP% == Yes (
    if exist "%FILE%-backup" (
        del "%FILE%-backup"
    )
    rename "%FILE%" "%FILE%-backup"
) else (
    del "%FILE%"
)

xcopy "%CD%\folder\%FILE%" "%CD%"

filename.cmd-backupユーザーがファイルのバックアップを選択した場合、ファイルの名前が変更されるという考えです。

ただし、ifステートメントの最後で、CMDを介して実行するとエラーが発生します(読みやすいように調整しました。これは私の正確なCMD出力です):

if Yes == Yes ( 
    if exist "filename.cmd-backup" ( 
        del "filename.cmd-backup"
    )
    rename "filename.cmd" "filename.cmd-backup"
) else (
    del "C:\path\to\file\filename.cmd"
)
The system can not find the file specified.

私は愚かな何かを逃していますか?

前もって感謝します。

4

2 に答える 2

1

構文的にはすべて問題ありませんでした。名前を変更したかったファイルが非表示になっていて、気づきませんでした。

そのため、ファイルを再表示するか、次のように変更する 2 つのオプションがあります。

set /p backup=Do you want to backup your current file? (Yes or No): 
set file=filename.cmd

if %BACKUP% == Yes (
    if exist "%FILE%-backup" (
        del "%FILE%-backup"
    )
    attrib -H "%FILE%"
    rename "%FILE%" "%FILE%-backup"
) else (
    attrib -H "%FILE%"
    del "%FILE%"
)

xcopy "%CD%\folder\%FILE%" "%CD%"
于 2013-01-30T18:08:37.383 に答える
0

xcopy問題は、スクリプトが に到達すると、ファイル名が%file%存在しなくなることだと思います。

バックアップを行う場合は名前が に変更されfilename.cmd-backup、そうでない場合は削除されます。

いずれにせよ、ファイルfilename.cmdはもう存在しません。

于 2013-01-30T16:08:33.863 に答える