1

この単純なバッチ スクリプトがあります。

@echo off
dir /o-d "K:\DIR\DIR\*.exe" > "D:\Logs\Files.txt"

txt 内のすべてのファイルを日付別に表示します。

私の質問は、特定のディレクトリ内のすべてのファイルではなく、日付ごとに最後のファイルのみを表示するにはどうすればよいですか?

前もって感謝します。

4

4 に答える 4

2

最後の行を取得する

最後のファイルのみに関心がある場合は、次のようにできます。

@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"
于 2012-09-19T10:56:09.670 に答える
1
@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を読んでください(コマンドラインから)forhelp for
  • goto最初の(最新の)ファイル/ディレクトリの後にループを中断するだけです。
  • ファイルにリダイレクトするには、バッチ自体をリダイレクトする ( batch.bat >myFile) または最後のエコー ( echo %file% > myFile)
  • Dir は、デフォルトでファイルだけでなくサブディレクトリにも一致します。dir /a-dファイルのみを照合するために使用 します。
于 2012-09-19T10:45:23.320 に答える
0

シェル/バッチコマンドを使用することはできないと思います。

Files.txt ファイルの最初の行を選択する別のプログラムを作成することができます

于 2012-09-19T10:16:35.090 に答える
0

最新ファイルのファイル名だけを取得する

@echo off
for /f "tokens=*" %%x in ('dir /b /o-d "K:\DIR\DIR\*.exe"') do (
    echo %%x
    exit /b 0
)
于 2012-09-25T13:23:04.547 に答える