0

我对命令提示符(Windows)很陌生,但是我用它来更改一些文件扩展名,它非常有帮助。我对编码一无所知,所以我只是在阅读我所读过的内容,但我正在寻找一个似乎在任何地方都找不到的命令行。我有文件夹,该文件夹内有 70 个子文件夹,每个子文件夹用 1-70 的数字标记。在这些子文件夹中大约有 20 个 png 图片文件,目前以 png 格式的 1-20 编号。我正在寻找一个命令行来将每个文件从其原始名称重命名为“文件夹名称(页码).png”

例如,我有一个名为“68”的文件夹,该文件夹内是 1.png、2.png、3.png。我希望命令行将 1.png 和 2.png 等更改为 68 (1).png 和 68 (2)。png,注意括号和文件夹名称之间的空格。抱歉,如果我把它弄糊涂了,但我真的很感激,我之前从 StackOverflow 得到了一些非常有用和快速的答案

如果你能帮助我,谢谢你,因为我对这件事完全没有希望。

4

3 回答 3

1

Only run this once - launch it from the folder containing the 70 folders.

@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
)
于 2013-04-27T09:50:12.680 回答
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循环中扩展的错误会导致文件被多次重命名。

于 2013-04-27T11:46:57.147 回答
0

我不是一个非常有经验的 bash 脚本编写者,但我想这应该为你完成任务。我假设您使用的是 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。这应该可以完成您在问题中提出的工作。

于 2013-04-27T06:31:32.467 回答