0

私はWindowsボックスとそのようなファイルを含むフォルダを持っています:

2010-07-04  20:18                81 in01_Acct_20100704001.r
2010-07-07  05:45               165 in01_Acct_20100706001.r
2010-07-07  19:41                82 in01_Acct_20100707001.r
2010-07-07  10:02                81 in01_Acct_20100707002.r
2010-07-08  08:31                89 in01_Acct_20100708001.r
2010-07-10  04:51                82 in01_Acct_20100709001.r

バッチを使用して、これらすべてのファイルを最新のフォルダー(in01_Acct_20100709001.rなど)を除く別のフォルダーに定期的に移動したいと思います。このファイルはまだ書き込まれていることがあり、移動すると、次の宛先フォルダーでファイルが上書きされる可能性があるためです。バッチを実行すると、ファイルの内容が失われます。

このケースについてのアイデアは大歓迎です。

4

2 に答える 2

3

私はこのバッチスクリプトがそれをするかもしれないと思います:

dir /TW /O-D /A-D /B > %TEMP%\tempFiles.txt
for /F "skip=1" %f IN (%TEMP%\tempFiles.txt) DO mv %f wherever
del %TEMP%\tempFiles.txt

これが何をするかを説明するには:

  1. 変更された時間(最新のものから) "/ TW / OD"でソートされたファイルのリストを作成し、ディレクトリ "/ AD"をスキップして、一時ファイルに保存します。
  2. 一時ファイルの各行を繰り返し、最初の行(最新のファイル)をスキップして、それぞれに対してmvコマンドを実行します。
  3. 一時ファイルを削除します。

編集:コメントによると、これが1行のバージョンです-dirコマンドをforループに挿入できます:

for /F "skip=1" %f IN ('dir /TW /O-D /A-D /B') DO mv %f wherever
于 2010-07-13T21:09:13.347 に答える
0

コマンドライン機能のウィンドウ確認してください(「コマンド」を使用した/ F演算子に関心があります)。dirで/bおよび/oオプションを使用して、必要なファイルのリストを生成できるはずです。次に、変数を使用して最初のスキップ(つまり、ソート順が正しいと仮定して最新)をスキップします。私は現在WindowsPCにいないので、正確な答えをスプーンで与えることができなかったので申し訳ありません:)

于 2010-07-13T21:09:24.407 に答える