she*_*har 7 windows batch command-line rename batch-rename
我有一个目录结构如下:
Folder
> SubFolder1
> FileName1.abc
> Filename2.abc
> .............
> SubFolder2
> FileName11.abc
> Filename12.abc
> ..............
> ..........
Run Code Online (Sandbox Code Playgroud)
等我想将子文件夹中的文件重命名为:
SubFolder1_Filename1.abc
SubFolder1_Filename2.abc
SubFolder2_Filename11.abc
SubFolder2_Filename12.abc
Run Code Online (Sandbox Code Playgroud)
即在文件名的开头添加文件夹名称,并使用分隔符“ _
”。目录结构应保持不变。注意:文件名的开头相同。例如在上述情况下 File*.
我做了下面的脚本
for /r "PATH" %%G in (.) do (
pushd %%G
for %%* in (.) do set MyDir=%%~n*
FOR %%v IN (File*.*) DO REN %%v "%MyDir%_%%v"
popd
)
Run Code Online (Sandbox Code Playgroud)
上述脚本的问题在于它只采用一个子文件夹名称并将其放置在文件名的开头,而与文件夹无关。
仅重命名直接子文件夹中的文件
@echo off
pushd "Folder"
for /d %%D in (*) do (
for %%F in ("%%~D\*") do (
for %%P in ("%%F\..") do (
ren "%%F" "%%~nxP_%%~nxF"
)
)
)
popd
Run Code Online (Sandbox Code Playgroud)
递归重命名子文件夹中的所有文件
@echo off
pushd "Folder"
for /d %%D in (*) do (
pushd "%%D"
for /r %%F in (*) do (
for %%P in ("%%F\..") do (
ren "%%F" "%%~nxP_%%~nxF"
)
)
popd
)
popd
Run Code Online (Sandbox Code Playgroud)
确保您只运行任一脚本一次!您不想在文件前放置多个前缀:-)
可以添加额外的代码以确保多次运行是安全的。
归档时间: |
|
查看次数: |
24206 次 |
最近记录: |