批处理文件重命名
问题描述:
我带来一个小问题:'(: 我有很多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"
)
但IT奥斯卡最佳吨工作,所以我试图
@echo off
FOR /R d:\txtwork %%G in (**.bak) DO (
set var_1="%%G"
certutil -f decode "%var_1%" "%var_1:~0,-4%"
)
它也没有工作。 帮助?
答
-
"%%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"
)
什么是错误您收到? –
*它没有工作*不是一个有用的问题描述。以什么**具体的方式**是它*不工作*?如果您希望我们帮助您,您必须**清楚地**和**明确**解释您遇到的问题,并**提出实际问题**。 *它也没有工作。帮助?*不是问题。 –