Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Windows批处理脚本中使用DIR命令根据给定的特定日期筛选文件?_Windows_Date_Batch File_Filter_Directory - Fatal编程技术网

如何在Windows批处理脚本中使用DIR命令根据给定的特定日期筛选文件?

如何在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

我已经创建了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"
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
修改器都依赖于区域设置。您应该清楚地定义是否要使脚本独立。如果没有,您需要描述您当前的日期/时间格式。。。