Windows 使用文件夹名称和序列号批量重命名文件-发送到菜单
我有一个叫sales的文件夹。我在那个文件夹里有imgxy.jpg、imgab.jpg等等。当我右键单击sales文件夹并发送到rename.bat文件(我已经将rename.bat文件复制到c:\documents and settings\username\send to)时,我希望sales文件夹中的文件更改为sales1.jpg、sales2.jpg等。对于我发送到此.bat文件的任何内容,这种行为都应该是正确的。昨晚windows 7上的以下代码运行正常。现在我是windows xp sp3,它不工作。它正在尝试重命名文件夹*c:\documents and settings\username* 请在下面帮助重命名.bat文件代码Windows 使用文件夹名称和序列号批量重命名文件-发送到菜单,windows,batch-file,command-line,Windows,Batch File,Command Line,我有一个叫sales的文件夹。我在那个文件夹里有imgxy.jpg、imgab.jpg等等。当我右键单击sales文件夹并发送到rename.bat文件(我已经将rename.bat文件复制到c:\documents and settings\username\send to)时,我希望sales文件夹中的文件更改为sales1.jpg、sales2.jpg等。对于我发送到此.bat文件的任何内容,这种行为都应该是正确的。昨晚windows 7上的以下代码运行正常。现在我是windows xp
@ECHO OFF
setlocal enabledelayedexpansion
set foldername=%1
for %%i in (%bar%) do set bar=%%~ni
FOR /D %%# in (%bar%) DO (
PUSHD "%%#"
FOR %%@ in ("*") DO (
set /a "inc+=1"
Echo Ren: ".\%%~n#\%%@" "%%~n#!inc!%%~x@"
Ren "%%@" "%%~n#!inc!%%~x@"
)
POPD
)
测试这个-它接受一个文件夹,而不是文件,但你在问题中提到的文件夹 不要叫它
rename.bat
,因为rename
是一个内部命令
@ECHO OFF
setlocal enabledelayedexpansion
PUSHD "%~1"
set inc=0
FOR /f "delims=" %%a in ('dir /b /a-d') DO (
set /a inc+=1
Echo Ren: "%%a" "%~n1!inc!%%~xa"
Ren "%%a" "%~n1!inc!%%~xa"
)
POPD
这是真实的脚本吗?为什么有一个
foldername
变量在赋值后不在任何地方使用?为什么在为条变量指定任何值之前(在的第一个循环中)会引用该变量?foldername
和bar
应该是同一个变量吗?嗨,脚本做了其他事情,为此我分配了它,为了方便发布,我去掉了其余的代码。文件夹名称提供文件夹的完整路径,其中bar仅提供父文件夹名称我的意思是,第一个for
循环不应该是这样的:for%%i in(%foldername%)do set bar=%%~ni
?您好,谢谢,重命名是一个符号名称,我尝试了该代码,它经过了重命名周期,并用自己的文件名重命名文件(任:“IMG_105511.JPG”“IMG_1055111.JPG”)因此,没有任何变化,但我使用的上面的一个在winows 7Look上再次起作用。重命名的文件末尾有一个额外的1,这是您要求的。是的,我同意,但希望文件名通过其文件夹名的名称命名。在这里,它所做的只是在现有文件名中添加一个序列号。谢谢,我不清楚这一点。请不要尝试他编辑了上面的代码。谢谢,代码工作得很好。再次感谢