我遇到一个小问题:'(: 我有很多txt文件,白天越来越多,我需要备份它们并出于安全原因对它们进行加密,所以我制作了一个批处理脚本:
@echo off
FOR /R d:\txtwork %%G in (**.txt **.trt) DO (
certutil -f -encode "%%G" "%%G.bak"
echo. >>D:\txtwork\logs\logbak1.txt %time:~0,-6% - Made a back-up of file - "%%G"
)
好的,这可以很好地工作,但我想制作一个批处理来解码它们并将扩展名更改为旧的(从.txt.bak或.trt.bak到.txt或.trt)所以我尝试并制作这个:
@echo off
FOR /R d:\txtwork %%G in (**.bak) DO (
certutil -f decode "%%G" "%%G:~0,-4"
)
但是我的工作已经完成了我的尝试
@echo off
FOR /R d:\txtwork %%G in (**.bak) DO (
set var_1="%%G"
certutil -f decode "%var_1%" "%var_1:~0,-4%"
)
它也没有用。 帮忙?
答案 0 :(得分:0)
"%%G:~0,-4"
完全错了; var_1
变量的值,您需要启用Delayed Expansion并使用!var_1!
代替%var_1%
,尽管这会带来另一个问题:
certutil -f decode "!var_1!" "!var_1:~0,-4!"
会扩展为certutil -f decode ""something.txt.bak"" ""something.txt""
(注意加倍双引号); set
命令语法:set "var_1=%%G"
(注意第一个双引号位置)。下一个代码段应该有效:
@echo off
SETLOCAL EnableExtensions DisableDelayedExpansion
FOR /R d:\txtwork %%G in (**.bak) DO (
set "var_1=%%G"
SETLOCAL EnableDelayedExpansion
certutil -f decode "!var_1!" "!var_1:~0,-4!"
ENDLOCAL
)
但是,您可以按如下方式使用Parameter Extensions:
@echo off
SETLOCAL EnableExtensions
FOR /R d:\txtwork %%G in (**.bak) DO (
certutil -f decode "%%G" "%%~dpnG"
)