0

ディレクトリ内の最新のファイルを見つける必要があります。私は最近のファイルに対して正常に動作する以下のコードを使用しましたが、私の問題は、同じタイムスタンプで生成された2つのファイルがあることです.

  1. s_dss_000GJ00I0000000000IW_9_error.csv
  2. s_dss_000GJ00I0000000000IW_8_1_2013_14_10_standard_error.csv

私のコードは次のとおりです。

for /f "delims=" %%x in ('dir /od /a-d /b %1') do set recent=%%x

s_dss_000GJ00I0000000000IW_9*.csvここでは、最新のファイルを見つけるために%1% 引数を渡しています。このコードは最新のファイルを として返しますが、 s_dss_000GJ00I0000000000IW_8_1_2013_14_10_standard_error.csv最新のファイルをs_dss_000GJ00I0000000000IW_9_error.csv.

これについて私を助けてもらえますか?

4

2 に答える 2

0

問題を解決する以下のバッチ スクリプトを作成しました。唯一の問題はそのコピーコマンドです。

ファイル名を別の名前でコピーしたい。それはうまくいきません。たとえば、s_dss_000GJ00I0000000000IW.csv を AAA.csv としてコピーする必要があります。

@ECHO OFF
setlocal EnableDelayedExpansion
set j=0
SET logdirectory=C:\batchfiles\error
SET logdirectoryBackup=C:\batchfiles\error_processing\
cd "%logdirectory%

FOR /f "delims=" %%i IN ('dir /b /a-d /o-d s_dss_000GJ00I0000000000IW*.csv') DO (
set /A j=j+1
echo !j!

set tst=%%i
set tst=!tst:standard=!
if not !tst!==%%i ( 
echo %%i contains standard
) else (

echo f|xcopy %%i "%logdirectoryBackup%"AAA.csv /Y
echo %%i not contains standard

)
if !j! geq 2 (

    goto :end
)

)
:end
pause
于 2013-08-06T05:38:38.663 に答える