在 FOR 循环中分配日期/时间参数 (%~t) 扩展名



第一次海报...抱歉,如果我错过了一些简单的东西... 当我尝试在FOR循环中分配日期/时间时,处理的每个文件都使用相同的日期/时间。我相信这是由于使用了%符号而不是使用符号,但我似乎找不到一种方法来让它工作。 我读过

"此变量子字符串语法仅适用于 CMD 环境 变量,如 %MYVAR%,它不适用于 FOR 参数 变量,如 %%G,但一个简单的解决方法是设置一个变量 first:设置 %MYVAR%=%%G 然后找到新 变量。

但它似乎不起作用,我假设那是因为它不再是一个文件,只是一个字符串并且没有日期/时间属性??? 任何建议将非常受欢迎。 问候。

命令行参数(参数) (https://ss64.com/nt/syntax-args.html)

变量:提取变量的一部分(子字符串)(https://ss64.com/nt/syntax-substring.html)

SETLOCAL EnableDelayedExpansion
for /R %USERPROFILE%Downloads %%F in (EPSG*.zip) do (
set name=%%F
set timestamp=%%~tF
set timestamp=!timestamp:~0,16!
set timestamp=!timestamp:/=!
set timestamp=!timestamp: =_!
set timestamp=!timestamp::=!
set destpath=%USERPROFILE%DownloadsNearmap!timestamp!
powershell -command "Expand-Archive -Force -Path !name! -DestinationPath  !destpath!"
)
@echo off
setlocal DisableDelayedExpansion
for /R "%USERPROFILE%Downloads" %%F in (EPSG*.zip) do (
set "name=%%~F"
setlocal EnableDelayedExpansion
set "timestamp=%%~tF"
set "timestamp=!timestamp:~0,16!"
set "timestamp=!timestamp:/=!"
set "timestamp=!timestamp: =_!"
set "timestamp=!timestamp::=!"
set "destpath=%USERPROFILE%DownloadsNearmap!timestamp!"
powershell -command "Expand-Archive -Force -Path '!name!' -DestinationPath '!destpath!'"
endlocal
)
  • 路径用双引号括起来以避免空格和特殊字符问题。
  • 启用和禁用循环中的延迟扩展有助于避免路径 如果!存在并在启用时被剥离,!则变为无效。
  • powershell 命令中使用的路径可以单引号 (这被视为文字字符串,这很好)。
  • 时间戳是基于区域设置的,因此无法确定我的测试是否 环境与你的环境相似。

相关内容

最新更新