我是命令提示符(Windows)的新手,但是我用它来做一些文件扩展名更改,这非常有帮助。我对编码一无所知,所以我只是想了解我所读到的内容,但我正在寻找一个我似乎无法找到的命令行。我有文件夹,在该文件夹内有70个子文件夹,每个子文件夹都标有1-70的数字。在这些子文件夹中大约有20个图片文件,目前用png格式的1-20编号。我正在寻找命令行将每个文件从其原始名称重命名为“文件夹名称(页码).png”
例如,我有一个名为'68'的文件夹,在该文件夹中是1.png,2.png,3.png。我希望命令行将1.png和2.png等更改为68(1).png和68(2)。 png,注意括号和文件夹名称之间的空格。很抱歉,如果我让它感到困惑,但我真的很感激,我从StackOverflow获得了一些非常有用和快速的答案
如果你能帮助我,谢谢你,因为我在这件事上完全没有希望。
答案 0 :(得分:1)
仅运行一次 - 从包含70个文件夹的文件夹中启动它。
@echo off
for /f "delims=" %%a in ('dir /ad /b') do (
pushd "%%a"
for /f "delims=" %%b in ('dir /a-d /b') do ren "%%b" "%%a (%%~nb)%%~xb"
popd
)
答案 1 :(得分:0)
我不是一个非常有经验的bash scriptor,但我想这应该为你完成任务。我假设你使用的是Linux操作系统。因此,打开文本编辑器并复制以下内容:
#!/bin/bash
NumberOfFolders=70
for((a=1; a <= NumberOfFolders ; a++))
do
cd ./$a
b=1
while [ -f $b.png ]
do
mv "$b.png" "$a($b).png"
let b=b+1
done
cd ..
done
将此脚本保存到文件夹1-70的位置(并将其命名为whatever.ssh)。然后打开一个终端并记下chmod a+x whatever.ssh
,然后记下./whatever.ssh
。这应该像你在问题中所做的那样完成工作。
答案 2 :(得分:0)
对建议的方法@foxidrive稍作修改,因此脚本可以从任何地方运行,而不必解析dir
输出:
@echo off
for /r "C:\root\folder" %%d in (.) do (
pushd "%%~fd"
for %%f in (*) do ren "%%~ff" "%%~nd (%%~nf)%%~xf"
popd
)
请注意,这不适用于Windows XP(不确定Windows Vista),因为内部*
循环中for
扩展导致文件重命名的错误多次。