0

わかりましたので、少し調査を行いましたが、ここで少しハードルにぶつかりました。私がやろうとしているのは、(イベントスケジューラを使用して)バッチを毎日実行することです。これは、「ips * .csvファイル(*は単なる日付形式)を前日のみ取得し、テストのために別の場所にコピーします「destiny ips」フォルダを使用しましたが、最後のハードルをめちゃくちゃにしてしまったようです。

 FORFILES /P "C:\Users\J\Desktop\ips bat\source ips" /M "ips*.csv" /C "cmd /c XCOPY C:\Users     \J\Desktop\ips bat\source ips folder C:\Users\J\Desktop\ips bat\destiny ips" /D -1

事前に助けてくれてありがとう。

ジョニー

4

3 に答える 3

1

コマンド ラインに特殊文字を含めるには、0xHH 形式の文字に 16 進コードを使用します (例: 0x09 はタブ文字、0x22 は二重引用符 " 文字)。"C:\Program Files\" は ^0x22C:\ になります。プログラム^ ファイル\^0x22

FORFILES 
   /P "C:\Users\J\Desktop\ips bat\source ips" 
   /M "ips*.csv" 
   /C "cmd /c 
     XCOPY ^0x22C:\Users\J\Desktop\ips^ bat\source ips folder^0x22
           ^0x22C:\Users\J\Desktop\ips^ bat\destiny ips^0x22" 
   /D -1

読みやすくするために複数行に分けましたが、1 行に戻すことをお勧めします。

于 2013-03-22T16:48:08.057 に答える
1
for /f "delims=" %%i in (
 'dir /b /o:-d "c:\users...etc...ips*.csv" ' ) do (
 xcopy /d "%%i" "C:\Users\J\Desktop\ips bat\destiny ips\" &goto :eof
 )

これは非常に簡単に行う必要があります (実際、すべてを 1 行で記述できます)。ファイルの最新バージョンのみを宛先にコピーし、宛先ファイルがまだ存在しない場合 (またはソースのバージョンです。) これにより、週末や祝日などの非稼働日を処理する必要があります。

宛先がすべての履歴を保持している場合 (つまりips*.csv、ソースにないファイルが宛先にある可能性がありますが、その逆はありません (「昨日」の新しいものを除く) )、単純に

xcopy /d "c:\users...etc...ips*.csv" "C:\Users\J\Desktop\ips bat\destiny ips\"

十分であろう。

重要なポイントは次のとおりです。

  1. 宛先は「これはディレクトリ名です」と言うために「\」で終わります
  2. 新しいファイルまたは更新されたファイルのみをコピーするように XCOPY に指示する /d。

(...etc... が必要なパス名の残りであることは当然のことです - DOS は超能力的ではありません)

于 2013-03-22T16:55:54.193 に答える
0

これは疑わしいようです-:

 XCOPY C:\Users     \J\Desktop\ips bat\source 

それが正しいか?

于 2013-03-22T16:34:29.800 に答える