2

基本的に宛先のコピーに使用されるバッチファイルを書き込もうとしています。さて、他の人がディレクトリや宛先を編集しなくても使える場所にしたいと思います。プロンプトが表示された場所にバッチファイルを書き込んで、ユーザーがコピーするディレクトリを要求し、ユーザーがコピー先のドライブを要求する方法はありますか?

これは私が今しばらく使っているものです。

@echo off
:: variable
set backupdir="Destination"
set backupcmd=xcopy /e /h /f /y /v /c /i /r /g /k /d
echo.
echo +++ Backing Up Data +++
echo.
echo.
%backupcmd% "Directory\*.*" "%backupdir%\Data"
timeout /t 2
cls
echo Backup Complete
echo.
echo.
timeout /t 2
cls
echo.
echo +++ Now taking hidden and system attributes off of folders +++
echo.
echo.
echo.
attrib -s -h "Destination\Data"
echo.
echo.
timeout /t 3

そして、xcopyを使用してこれを改善できる方法はありますか?

4

1 に答える 1

1

あなたが使用することができます:

SET /P variable=[promptString]

ドキュメントから:

/ Pスイッチを使用すると、変数の値をユーザーが入力した入力行に設定できます。入力行を読み取る前に、指定されたpromptStringを表示します。promptStringは空にすることができます。

あなたはそれを次のように使用します:

set /p backupdir=Enter Destination Directory: 

と:

set /p sourcedir=Enter Source Directory: 

次に、コピーコマンドを次のように変更します。

%backupcmd% "%sourcedir%\*.*" "%backupdir%\Data"

そして、あなたのコマンドを忘れないattribでください(すでに使用されているはず%backupdir%です):

attrib -s -h "%backupdir%\Data"

別の方法として、オプションのコマンドライン引数を許可することを検討してください。

dobackup Destination BackupDir

これらの変更で実装されました:

if "%1" == "" (
    set /p backupdir=Enter Destination Directory: 
) else (
    set backupdir=%~1
)

if "%2" == "" (
    set /p sourcedir=Enter Source Directory: 
) else (
    set sourcedir=%~2
)

SETLOCAL最後に、後に行を追加する@echo offと、名前付き変数がグローバル環境空間に含まれなくなります。

于 2012-12-05T18:03:07.830 に答える