批处理文件重命名

问题描述:

我带来一个小问题:'(: 我有很多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%" 
) 

它也没有工作。 帮助?

+0

什么是错误您收到? –

+1

*它没有工作*不是一个有用的问题描述。以什么**具体的方式**是它*不工作*?如果您希望我们帮助您,您必须**清楚地**和**明确**解释您遇到的问题,并**提出实际问题**。 *它也没有工作。帮助?*不是问题。 –

  • "%%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" 
)