Batch file 批处理文件重命名

Batch file 批处理文件重命名,batch-file,Batch File,我有个小问题:'(: 我有很多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文件,每天都会收到越来越多的文件,出于安全考虑,我需要对它们进行备份和加密,因此我制作了一个批处理脚本:

@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%" 
)
它也不起作用。 帮助?

  • “%%G:~0,-4”
    完全错误
  • 要检索
    var\u 1
    变量的值,您需要启用并使用
    !var\u 1!
    而不是
    %var\u 1%
    ,尽管这样做会带来另一个问题:
    • certutil-f decode“!var_1!”!var_1:~0,-4!”
      将扩展到
    • certutil-f decode”“something.txt.bak”“something.txt”“
      (注意双引号)
  • 使用next
    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
)
但是,您可以使用以下方法:

@echo off 
SETLOCAL EnableExtensions
FOR /R d:\txtwork %%G in (**.bak) DO (
    certutil -f decode "%%G" "%%~dpnG" 
)

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