2017-01-31 9 views
-3

cmdを使用してバックアップスクリプトを作成しようとしています。 これは、これまでの私のコードです:cmdを使用したバックアップフォルダ

X: 
MKDIR "2017MMDD XXX Restore Profile" 
CD "X:\2017MMDD XXX Restore Profile" 
MKDIR "Desktop" 
MKDIR "Favorites" 
MKDIR "My Documents" 
MKDIR "Pictures" 
MKDIR "Videos" 
XCOPY "C:\Users\%username%\Desktop" "X:\2017MMDD XXX Restore Profile\Desktop" 
XCOPY "C:\Users\%username%\Favorites" "X:\2017MMDD XXX Restore Profile\Favorites" 
XCOPY "C:\Users\%username%\Documents" "X:\2017MMDD XXX Restore Profile\My Documents" 
XCOPY "C:\Users\%username%\Pictures" "X:\2017MMDD XXX Restore Profile\Pictures" 
XCOPY "C:\Users\%username%\Videoes" "X:\2017MMDD XXX Restore Profile\Videos" 



Pause 

問題はそれだけでコピーしたファイルとフォルダではなく(いずれかがある場合)ということです。ファイルとフォルダの両方をコピーする関数が必要です。

BONUS、cmdに日付を書き込むコマンドはありますか? (2017MMDDの代わりに、残りの部分を記入する必要があります):

+0

私はそれを理解しました。唯一のことは、日付を自動的に作成する方法です。 –

+0

使用しているコマンドのヘルプを読むのはどうですか? 'xcopy /?'を新しいコマンドプロンプトウィンドウに入力してください。日付部分について:このサイトを検索すると、それに関する多くの質問と回答があります。 'X:\ 2017MMDD XXX Restore Profile \ Desktop'にスペースが多すぎます! – aschipfl

+0

私が言ったように、私はそれを働かせます。スペースは問題ではありませんでした。 –

答えて

0

日付の問題に答えるには、コマンドdate /tで現在の日付を指定できます。そのコマンドの「ショートカット」は、動的環境変数%date%です(その変数を他の値で上書きしなかった場合のみ)。 2つのうちの1つをfor fと組み合わせると、あなたの日付の形式が与えられた年、月、日を簡単に抽出できます。私があなたに警告する前に、formatdate /tコマンドと%date%変数が日付を返す場所は、の設定に依存します(場所や言語の設定はおそらくWindowsのバージョンに依存します) 。私の場合はフォーマットがいたとdd DD/MM/YYYY:曜日

  • DD月の現在の日(2桁形式)
  • MM現在の月の名前の

    • dd 2文字今年の(2桁形式)
    • YYYY現在の年(4桁形式)

    ので私の側に、日、月、年を得るためには、この方法でfor fを使用しなければなりません:区切り文字として/(空白)を使用し、それぞれ日を表す2番目、3番目、 、月と年。

    @echo off 
    
    for /f "tokens=2-4 delims=/ " %%G IN ("%date%") DO (
        set day=%%G 
        set month=%%H 
        set year=%%I 
    ) 
    echo day: %day% 
    echo month: %month% 
    echo year: %year% 
    
  • 関連する問題