使用我在此处列出的每个命令,您可以commandname /?
获取更多信息。
%date%
环境变量的第二个标记和date /t
命令以与列表相同的格式显示今天的日期dir
。
该dir
命令有一个可用的/a
开关,它允许仅显示具有(或不具有)特定属性的文件。要排除目录(例如.
和..
),请使用dir /a:-d
.
您可以使用 捕获命令的输出for /f
。
find
最后,您可以使用或findstr
命令 测试字符串是否存在。findstr
让您使用正则表达式进行搜索以获得更大的灵活性。但是,如果您只想搜索文字字符串,find
则可以正常工作。
把所有这些放在一起:
@echo off
rem "setlocal" prevents any variables you set within your batch script
rem from remaining as environment orphans after the script completes.
setlocal
rem set variable %today% as the second token of %date%
for /f "tokens=2" %%I in ("%date%") do set today=%%I
rem dir list, skip directories, skip this batch script, include only files with a date matching %today%
for /f "tokens=4*" %%H in ('dir /a-d ^| findstr /v /i "%~nx0$" ^| find "%today%"') do (
rem record success for later
set found=1
rem search file %%I for "string" (case-insensitive).
find /i "string" "%%I">NUL
rem Was last command successful?
if %ERRORLEVEL%==0 (
echo Test string found
) else (
echo Test string NOT found
)
)
rem if success was not recorded
if not defined found echo No file today
然后,当您开始将编码更多地视为一种艺术表达的手段而不是达到目的的手段时,您可以执行更高级的技巧以使用更少的代码行来执行相同的任务。
@echo off
setlocal
for /f "tokens=2" %%I in ("%date%") do set today=%%I
for /f "tokens=4*" %%H in ('dir /a-d ^| findstr /v /i "%~nx0$" ^| find "%today%" ^|^| echo No file today 1^>^&2') do (
(find /i "string" "%%I" >NUL && (
echo Test string found.
)) || echo Test string not found.
)