创建了一个批处理文件,以进入特定目录中的AutoCAD“ .scr”文件,该文件现已创建。我不确定如果要使用FORFILES代替我该做什么。该代码有效,但不适用于今天创建的文件。
我曾尝试做类似
的参数(%~ti :: FindSTR %DATE%)
,并在注释中建议:
ECHO %~ti |FindSTR %DATE% && (echo today) || (echo other day)
在查找要打开的文件时也尝试为FOR命令指定日期,并寻找 .open 替换为 OPEN Y ,但不确定语法或将其添加到脚本的位置。
即使需要更改文本DOESNT,该脚本似乎也会进入所有文件并保存,但是将其更改为仅更改今天创建或最后修改的文件将防止这种情况的发生。
@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命令执行此操作的文档。我是一个初学者,可以说在Batch文件中,我在这一点上写了几篇,但是我不确定如何做到这一点。
我知道通过Powershell可以更轻松地实现此功能,但是出于安全原因,我所在的公司不允许我们使用Powershell。
答案 0 :(得分:1)
您可以使用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
)
)