0

X 時間より古いフォルダー内のファイルを検索する必要があります。これは、他に何もロードしたくない古いサーバーであるため、バッチで実行する必要があります。これはFind out if file is old than 4 hours in Batch fileに基づいていますが、その解決策は 1 つの静的ファイル名に対してのみ記述されています。複数のファイルと米国の日付形式に合わせて調整しましたが、ファイルの分で問題が発生し、午前または午後の「a」または「p」を取得しています。以下に部分的な解決策を投稿しました(日付の計算を実行せず、画面のファイル名と日付/時刻の値にエコーします)。a または p を取り除く方法についてのアイデアはありますか?

rem extract current date
for /f "tokens=1-5 delims=.,/ " %%a in ("%date%") do (
  set day=%%c&set mon=%%b&set yr=%%d
)
REM Extract Current Time
for /f "tokens=1-5 delims=.:, " %%a in ("%time%") do (
set hr=%%a&set min=%%b
)
REM BUILD LIST OF FILES IN DIRECTORY
dir /B /O:N c:\mydir\*myfilestub*.* >list.txt
Rem LOOP THROUGH LIST OF FILES and CALL SUBROUTINE TO CHECK FILE DATE 
For /F %%A in (list.txt) DO (CALL :CHECKFILE %%A)
GOTO :EOF

:CHECKFILE
REM  CHECKING FILE %* 
set filename=%*
rem extract file date and time
for /f "tokens=1-5 delims=.:,/ " %%a in ('"dir c:\mydir\%filename%|find "%filename%""') do (
  set fday=%%a&set fmon=%%b&set fyr=%%c&set fhr=%%d&set fmin=%%e
)        
ECHO   %FILENAME% %fday% %fmon% %fyr% %fhr% %fmin%
GOTO :EOF
4

1 に答える 1

0

http://www.dostips.com/DtTipsStringManipulation.phpのおかげで、ファイルの日付を取得していた for ループの下に行を追加するだけで、必要な答えが得られました

SET fmin=%fmin:~0,2%

Windows サーバー上で DOS だけで実現できることは驚くべきことです。このスクリプトをクリーンアップして短縮できることはわかっていますが、私の目的には合っています。

于 2013-03-11T15:57:34.743 に答える