Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmd 基于另一个文件名重命名文件名的shell脚本_Cmd_Rename - Fatal编程技术网

Cmd 基于另一个文件名重命名文件名的shell脚本

Cmd 基于另一个文件名重命名文件名的shell脚本,cmd,rename,Cmd,Rename,我的文件夹中有2个文件。一个是“testone.txt”,另一个是“learnew.vcd”。 我需要创建一个批处理脚本,使用*.vcd重命名*.txt。 因此,批处理脚本应该将“testone.txt文件”重命名为“learnew.txt” 我的文件夹C:\DEV文件夹中只有一个txt文件和一个vcd扩展名文件 我尝试使用以下脚本,但它没有获取vcd扩展的全名,并删除空格后的所有内容-因此我只获得LEARN.txt:( 谢谢-db看来/F的中的默认值可能是只接受一(1)个令牌。您可以使用令牌=

我的文件夹中有2个文件。一个是“testone.txt”,另一个是“learnew.vcd”。 我需要创建一个批处理脚本,使用*.vcd重命名*.txt。 因此,批处理脚本应该将“testone.txt文件”重命名为“learnew.txt”

我的文件夹C:\DEV文件夹中只有一个txt文件和一个vcd扩展名文件

我尝试使用以下脚本,但它没有获取vcd扩展的全名,并删除空格后的所有内容-因此我只获得LEARN.txt:(


谢谢-db

看来/F的
中的默认值可能是只接受一(1)个令牌。您可以使用
令牌=*
强制它接受所有令牌。引用很重要

@echo ON
CD "sub"
setlocal enabledelayedexpansion
for /F "usebackq tokens=*" %%A in (`dir /b *.vcd`) do (
  set xname=%%~nA
  ren "*.txt" "!xname!.txt"
)

为了防止有人像我一样偶然发现这一点,我被迫设计了一个更优雅的解决方案,因为我希望它能够遍历多个子目录,而不是一次运行一个目录。它是:
forfiles/S/M*.vcd/C“cmd/C rename*.txt@fname.txt”


使用您选择的文件扩展名。

您甚至不需要延迟扩展和变量:
ren“*.txt”“%%~nA.txt”
@echo ON
CD "sub"
setlocal enabledelayedexpansion
for /F "usebackq tokens=*" %%A in (`dir /b *.vcd`) do (
  set xname=%%~nA
  ren "*.txt" "!xname!.txt"
)