如何在Windows批处理脚本中使用DIR命令根据给定的特定日期筛选文件?
我已经创建了windows批处理脚本,以创建zip文件,并根据给定日期将其从源移动到目标,如下所示: C:>MkeAndMve_file.bat sourcepath destinationpath output.zip 2017年1月25日 我可以创建拉链和移动。但我无法根据给定的日期进行筛选。我正在使用以下脚本来执行此操作如何在Windows批处理脚本中使用DIR命令根据给定的特定日期筛选文件?,windows,date,batch-file,filter,directory,Windows,Date,Batch File,Filter,Directory,我已经创建了windows批处理脚本,以创建zip文件,并根据给定日期将其从源移动到目标,如下所示: C:>MkeAndMve_file.bat sourcepath destinationpath output.zip 2017年1月25日 我可以创建拉链和移动。但我无法根据给定的日期进行筛选。我正在使用以下脚本来执行此操作 @echo off &setlocal set "sourceFolder=C:\Users\1545280\Documents\Mohan_J\SOURCE1
@echo off &setlocal
set "sourceFolder=C:\Users\1545280\Documents\Mohan_J\SOURCE1"
set "cabFolder=C:\Users\1545280\Documents\Mohan_J\DESTINATION1"
set "cabName=my.cab"
set dt="1/25/2017"
call :mkCab "%sourceFolder%" "%cabFolder%" "%cabName%"
pause
goto :eof
:mkCab
:: change working directory
pushd "%temp%"
:: define variables in .ddf file
>directives.ddf echo .Option Explicit
>>directives.ddf echo .Set SourceDir="%~1"
>>directives.ddf echo .Set DiskDirectoryTemplate="%~2"
>>directives.ddf echo .Set CabinetNameTemplate="%~3"
>>directives.ddf echo .Set MaxDiskSize=0
>>directives.ddf echo .Set CabinetFileCountThreshold=0
>>directives.ddf echo .Set UniqueFiles=OFF
>>directives.ddf echo .Set Cabinet=ON
>>directives.ddf echo .Set Compress=ON
>>directives.ddf echo .Set CompressionType=MSZIP
>>directives.ddf echo .Set DestinationDir="%~n1"
:: save current ASCII code page
for /f "tokens=2 delims=:" %%i in ('chcp') do set /a oemcp=%%~ni
:: change code page to ANSI
chcp 1252>nul
:: append all file names of the source folder
for /f "delims=" %%i in ('dir /a-d /b "%~1"') do (
::for /f "delims=" %%i in ('forfiles /P "%1%" /D "%dt%"') do (
>>directives.ddf echo "%%i"
)
:: process sub folders
for /f "delims=" %%i in ('dir /ad /b "%~1"') do (
::for /f "delims=" %%i in ('forfiles /P "%1%" /D "%dt%"') do (
echo %%i
>>directives.ddf echo .Set SourceDir="%~1\%%i"
>>directives.ddf echo .Set DestinationDir="%~n1\%%i"
for /f "delims=" %%j in ('dir /a-d /b "%~1\%%i"') do (
:: for /f "delims=" %%j in ('forfiles /P "%~1\%%i" /D "%dt%"') do (
>>directives.ddf echo "%%j"
)
)
:: change back to ASCII
chcp %oemcp%>nul
:: call makecab
makecab /f directives.ddf
:: clean up
del setup.inf
del setup.rpt
del directives.ddf
:: return to the previous working directory
popd
goto :eof
如何根据给定日期筛选文件
for /f "delims=" %%i in ('dir /a-d /b "%~1"')
我试着
for /f "delims=" %%i in ('dir /a-d /b "%~1" ^| find "01/25/2017"')
但它不起作用。请帮助我根据上面提到的DIR命令中指定的日期作为参数筛选文件提示:
DIR/b
仅显示文件名。没有日期,没有时间,没有属性,没有大小。。。您可以使用%%~ta
获取日期/时间(请参阅以获取/?
以了解更多这些修饰符)(文件)在cmd
/中处理日期/时间非常糟糕。您可以使用wmic数据文件where(Name=“D:\\folder\\filename.ext”)get LastModified
来获取独立于区域设置的日期/时间格式。诸如date
/time
、dir
和forfiles
等命令以及~t
修改器都依赖于区域设置。您应该清楚地定义是否要使脚本独立。如果没有,您需要描述您当前的日期/时间格式。。。