Batch file 递归重命名是';我一点也不批量工作
因此,我一直在其他主题中搜索如何以递归方式重命名.bat中的文件和文件夹,但它根本不起作用 我的代码是:Batch file 递归重命名是';我一点也不批量工作,batch-file,Batch File,因此,我一直在其他主题中搜索如何以递归方式重命名.bat中的文件和文件夹,但它根本不起作用 我的代码是: @ echo off setlocal enabledelayedexpansion set /p rut="Introduce folder: " FOR /D /R %%x in ("%rut%"\*) DO ( cd %rut% echo %cd% pause ren .\* "a" ) exit 但这只会重命名第一个文件夹中的文件,而不会重命名其余文件夹中的文件。Forf
@ echo off
setlocal enabledelayedexpansion
set /p rut="Introduce folder: "
FOR /D /R %%x in ("%rut%"\*) DO (
cd %rut%
echo %cd%
pause
ren .\* "a"
)
exit
但这只会重命名第一个文件夹中的文件,而不会重命名其余文件夹中的文件。Forfile对这些变量根本不起作用
我想得到的是如何将主文件夹(包括子文件夹)中的所有内容重命名为“a”,无论是文件还是文件夹,以解决Windows在尝试删除完整结构时路由过长的问题,这就是为什么我不能使用“.txt.”解决方案的原因
powershell解决方案也是有效的
多谢各位
编辑我添加了一个随机项,以查看名称是否存在冲突,但没有,它仍然不起作用:
ren .\* "a%RANDOM%"
从cmd重命名它们的工作方式也是一样的,我的意思是,如果我写
ren“folder”“whatever”
它会改变,但在脚本中不使用“*”我在代码中没有看到任何递归语句,我希望在该循环中调用批处理文件在我搜索的教程中它们都是一样的,只是for with/R,这意味着“递归”让我们来看看。将根文件夹放在/R
选项之后,而不是将其包含在集合中(即(
/)
中之后的部分)--请看……除非每个文件夹中最多有一个文件,否则整个前提不可能工作。任何给定文件夹中只有一个文件可以有名称“a”。