Thr*_*rax 1 windows batch-file backslash
我的脚本用于删除超过n几天的日志文件。它在特定上下文(Spring 批处理)中调用,该上下文先前已初始化多个环境变量。
这是脚本的内容:
set DAYS = 3
forfiles /p %LOG_PATH% /s /d -%DAYS % /m *.* /c "cmd /c del @FILE"
Run Code Online (Sandbox Code Playgroud)
如您所见,我无法控制LOG_PATH. 它在别处初始化并包含一个带有斜杠(而不是反斜杠)的路径,例如:D:/DATA/LOGS
当我启动这个脚本时,我得到了这个错误: The directory name is invalid.
如果我手动用反斜杠写路径,则命令成功。
那么,是否可以将环境变量隔开以便命令接受斜杠?或者你将如何在运行时用反斜杠替换斜杠?
谢谢。
我会尝试
set "DAYS=3"
forfiles /p "%LOG_PATH:/=\%." /s /d -%DAYS% /m *.* /c "cmd /c del @PATH"
Run Code Online (Sandbox Code Playgroud)
在哪里
%LOG_PATH:/=\% 将执行斜杠到反斜杠替换。 %DAYS%定义更改为删除名称和值中的空格forfiles /s要求递归搜索,并且@FILE只会检索文件的名称和扩展名,因此更改为@PATH以确保代码只会从当前活动目录中删除找到的文件。如果您无法控制 的内容%LOG_PATH%并且不知道变量是否包含引号,则再次引用变量可能会导致更多问题。一个更安全的版本可能是
set "DAYS=3"
forfiles /p "%LOG_PATH:/=\%." /s /d -%DAYS% /m *.* /c "cmd /c del @PATH"
Run Code Online (Sandbox Code Playgroud)
在请求for命令引用的元素的完整路径时,删除变量中的引号(如果存在)并更正路径
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |