Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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/2/batch-file/5.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 是否使用语法/脚本仅为批处理文件选择%date%(今天)创建的文件?_Windows_Batch File_Command - Fatal编程技术网

Windows 是否使用语法/脚本仅为批处理文件选择%date%(今天)创建的文件?

Windows 是否使用语法/脚本仅为批处理文件选择%date%(今天)创建的文件?,windows,batch-file,command,Windows,Batch File,Command,创建了一个批处理文件,以进入特定目录中的AutoCAD“.scr”文件,该文件是今天创建的。我不知道是否要做我需要的,如果我必须使用FORFILES代替。代码可以工作,但不适用于今天创建的文件 我试着提出一些论点,比如 正如评论中所建议的: 尝试在查找要打开的文件时指定for命令的日期,并查找。open替换为open Y,但我不确定语法或可以将其添加到脚本的位置 脚本似乎会进入所有文件并保存,即使文本不需要更改,但是将其更改为仅更改今天创建或上次修改的文件将防止这种情况发生 @echo off

创建了一个批处理文件,以进入特定目录中的AutoCAD“.scr”文件,该文件是今天创建的。我不知道是否要做我需要的,如果我必须使用FORFILES代替。代码可以工作,但不适用于今天创建的文件

我试着提出一些论点,比如

正如评论中所建议的:

尝试在查找要打开的文件时指定for命令的日期,并查找。open替换为open Y,但我不确定语法或可以将其添加到脚本的位置

脚本似乎会进入所有文件并保存,即使文本不需要更改,但是将其更改为仅更改今天创建或上次修改的文件将防止这种情况发生

 @echo off 
 setlocal enableextensions disabledelayedexpansion

 FOR /R "V:\PPY005\CSC\Script Maker" %%S in (*.scr) DO (
    for /f "delims=" %%i in ('type "%%S" ^& break ^> "%%S" ') do (
         set "line=%%i"
         setlocal enabledelayedexpansion
         >>"%%S" echo(!line:.open=open y!
         endlocal
     )

 )
我需要它只适用于今天创建的文件,因为当我们手动加载这些文件时,它会造成一些混乱,如果加载标题中注明日期的文件(如9-10-IMP-EM.scr)并显示在顶部,就好像它是为今天创建/修改的一样,则会造成混乱

我需要列出的目录,因为此批处理不在正在更改的文件的根目录中,脚本正在该目录中查找特定文件类型的文件,我们更喜欢将脚本放在一个特殊的目录中,只从网络位置引用它们,例如从文档打开一个链接位置,或者使用一个批处理文件,该批处理文件将有一个菜单来选择和运行中引用的特定批处理文件(不需要帮助,我知道如何做)

我有点扯我的头发与此有关,因为我无法找到有关如何使用FOR命令执行此操作的在线文档。我是一个初学者,所以说在批处理文件,我写了几个在这一点上,但我不知道如何做到这一点


我知道通过Powershell这样做可能更容易,但出于安全原因,我工作的公司不允许我们使用Powershell。

您可以使用
FORFILES
命令根据日期选择文件。然后,您可以使用
FOR/F
命令解析
FORFILES
命令的输出,然后将该命令嵌套到原始代码中

@echo off 
setlocal enableextensions disabledelayedexpansion

FOR /F "delims=" %%G IN (
    'FORFILES /P "V:\PPY005\CSC\Script Maker" /M *.scr /D +0 /C "cmd /c echo @path"'
) DO (
for /f "delims=" %%H in ('type "%%~G" ^& break ^> "%%~G" ') do (
    set "line=%%H"
    setlocal enabledelayedexpansion
    >>"%%~G" echo(!line:.open=open y!
    endlocal 
)
)

请不要删除和转发问题。如果您有新的信息要添加到问题中,请在中编辑。第一行的语法是:
echo%~ti|FindSTR%DATE%&&(echo today)| |(echo other day)
@Stephan我该如何实现这一点?把它作为破坏脚本的第一行。我把这个参数放在哪里?嗯,
%~ti
for
命令的伪变量,所以把它放在
for
循环中是有意义的。请参见
以获取/?
或。@Stephan my%date%变量与
t
修饰符输出的日期不匹配,因为日期变量还输出一周中的某一天。但我明白你的意思。如果你能将它们放入一个公共变量中,这样比较起来就很容易了。我在批处理脚本x2之外调用批处理标签时出现了一些错误(这个错误在:Process@Path之后发生了两次)它没有改变文件中的文本。我尝试了你的方式,但它不起作用,然后我改变了它,使用我已经为批处理实用程序使用的正确的GOTO命令。此外,这个批处理将每天使用,是否有能力使用%DATE%而不是静态日期id必须每天更改?我想添加一个t我更改了路径来测试这个,这就是为什么链接中的代码引用了不同的路径。它没有找到任何文件,也没有在我测试的任何文件中将.open更改为open Y。它还表示无效参数/选项-“:Process”在我关闭a后)“我注意到代码中打开了它。@Daggerfella,我忘记了
FORFILES
命令的限制。您不能直接对标签执行
调用
,因为它无权访问父进程。
 @echo off 
 setlocal enableextensions disabledelayedexpansion

 FOR /R "V:\PPY005\CSC\Script Maker" %%S in (*.scr) DO (
    for /f "delims=" %%i in ('type "%%S" ^& break ^> "%%S" ') do (
         set "line=%%i"
         setlocal enabledelayedexpansion
         >>"%%S" echo(!line:.open=open y!
         endlocal
     )

 )
@echo off 
setlocal enableextensions disabledelayedexpansion

FOR /F "delims=" %%G IN (
    'FORFILES /P "V:\PPY005\CSC\Script Maker" /M *.scr /D +0 /C "cmd /c echo @path"'
) DO (
for /f "delims=" %%H in ('type "%%~G" ^& break ^> "%%~G" ') do (
    set "line=%%H"
    setlocal enabledelayedexpansion
    >>"%%~G" echo(!line:.open=open y!
    endlocal 
)
)