【发布时间】:2018-10-18 17:56:06
【问题描述】:
创建了一个批处理文件以进入我们今天创建的特定目录中的 AutoCAD '.scr' 文件。我不确定是否要做我需要的,如果我必须使用 FORFILES 代替。该代码有效,但不适用于今天创建的文件。
我试过提出诸如之类的论点
(%~ti :: FindSTR %DATE%)
并按照 cmets 中的建议:
ECHO %~ti |FindSTR %DATE% && (echo today) || (echo other day)
在查找要打开的文件时尝试为 FOR 命令指定日期并查找要替换为 OPEN Y 的 .open,但我不确定语法或我可以将它添加到脚本的地方。
脚本似乎会进入所有文件并保存,即使文本不需要更改,但将其更改为仅更改今天创建或最后修改的文件将防止这种情况发生。
@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。
【问题讨论】:
-
请不要删除和转发问题。如果您有新信息要添加到您的问题中,请在其中进行编辑。
-
第一行的语法是:
echo %~ti |FindSTR %DATE% && (echo today) || (echo other day) -
@Stephan 我究竟是如何实现的?将其作为使脚本崩溃的第一行。我该把这个论点放在哪里?
-
好吧,
%~ti是for命令的伪变量,因此将它放在for循环中是有意义的。请参阅for /?或SS64。 -
@Stephan 我的 %date% 变量与
t修饰符输出的日期不匹配,因为 date 变量还输出星期几。但我知道你要去哪里。如果您可以将它们放入一个公共变量中,那么比较它们会很容易。
标签: windows batch-file command