首页 > 解决方案 > 语法/脚本仅选择为批处理文件创建%date%(今天)的文件?

问题描述

创建了一个批处理文件以进入我们今天创建的特定目录中的 AutoCAD '.scr' 文件。我不确定是否要做我需要的,如果我必须使用 FORFILES 代替。该代码有效,但不适用于今天创建的文件。

我试过提出论点,例如

(%~ti :: FindSTR %DATE%)

正如评论中所建议的:

ECHO %~ti |FindSTR %DATE% && (echo today) || (echo other day)

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

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

 @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。

标签: windowsbatch-filecommand

解决方案


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

@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 
)
)

推荐阅读