この単純なバッチ スクリプトがあります。
@echo off
dir /o-d "K:\DIR\DIR\*.exe" > "D:\Logs\Files.txt"
txt 内のすべてのファイルを日付別に表示します。
私の質問は、特定のディレクトリ内のすべてのファイルではなく、日付ごとに最後のファイルのみを表示するにはどうすればよいですか?
前もって感謝します。
この単純なバッチ スクリプトがあります。
@echo off
dir /o-d "K:\DIR\DIR\*.exe" > "D:\Logs\Files.txt"
txt 内のすべてのファイルを日付別に表示します。
私の質問は、特定のディレクトリ内のすべてのファイルではなく、日付ごとに最後のファイルのみを表示するにはどうすればよいですか?
前もって感謝します。
最後のファイルのみに関心がある場合は、次のようにできます。
@echo off
for /f "tokens=*" %%a in ('dir /o-d "K:\DIR\DIR*.exe" ^| findstr /C:"/"') do set last=%%a
echo %last%
これにより、コマンドの出力から最後のファイル名のみが表示されますdir
。ファイルにリダイレクトする場合は、次のように置き換えますecho %last%
。
echo %last% > "D:\Logs\Files.txt"
最初のファイルに関心がある場合は、コードを次のように少し変更する必要があります。
for /f "tokens=*" %%a in ('dir /o-d "K:\DIR\DIR*.exe" ^| findstr /C:"/"') do set first=%%a && goto Done
:Done
echo %first%
繰り返しますが、ファイルにリダイレクトすることに関心がある場合は、次のように置き換えますecho %first%
。
echo %first% > "D:\Logs\Files.txt"
@echo off
setlocal
for /f "delims=" %%F in ('dir /b /o-d') do (
set file=%%~nxF %%~tF
goto display
)
:display
echo %file%
ノート:
for
して「解読」するには、ヘルプ%%~nxF %%~tF
を読んでください(コマンドラインから)for
help for
goto
最初の(最新の)ファイル/ディレクトリの後にループを中断するだけです。batch.bat >myFile
) または最後のエコー ( echo %file% > myFile
)dir /a-d
ファイルのみを照合するために使用
します。シェル/バッチコマンドを使用することはできないと思います。
Files.txt ファイルの最初の行を選択する別のプログラムを作成することができます
最新ファイルのファイル名だけを取得する
@echo off
for /f "tokens=*" %%x in ('dir /b /o-d "K:\DIR\DIR\*.exe"') do (
echo %%x
exit /b 0
)