windows - 语法/脚本仅选择为批处理文件创建%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。
解决方案
您可以使用该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
)
)
推荐阅读
- sql - 删除每个选定变量的 2 个最新参考期 (varchar) 行以外的所有行
- amazon-web-services - API 网关调用 Lambda 函数时出现间歇性状态 500 错误
- mathematical-optimization - 有硬件推荐使用 pyomo 和 GLPK 运行线性规划求解器吗?
- amazon-web-services - 无服务器:未找到无服务器错误属性
- html - Jquery为什么在append方法后动态创建的按钮不能与click函数一起使用
- javascript - 如何检查我正在生成唯一 ID?
- javascript - 使用 TypeORM 和 NodeJS 实现数据库锁(悲观读写)的正确方法
- neo4j - 如何为嵌入式 Neo4j 数据库设置密码
- sql - 如何连接两个不同的行
- r - 格式化后可以重新选择数据表列吗?