Windows 将序号添加到文件夹中文件名的开头

Windows 将序号添加到文件夹中文件名的开头,windows,cmd,Windows,Cmd,我在一个文件夹中有很多文件,我想在这个文件夹中每个文件的开头添加序列号。我还希望文件按大小排序,而不是按字母顺序 例如:如果文件“something.mp3”是文件夹中最大的文件,则应将其重命名为“01-something.mp3”。我想在Windows上执行此操作。Bash: I=0; for FILE in `ls -S`; do mv $FILE "$I - $FILE"; I=$((I+1)); done 狂欢节: 由于您的操作系统可能会按字母顺序列出文件,因此我建议在某些时候使用pr

我在一个文件夹中有很多文件,我想在这个文件夹中每个文件的开头添加序列号。我还希望文件按大小排序,而不是按字母顺序

例如:如果文件“something.mp3”是文件夹中最大的文件,则应将其重命名为“01-something.mp3”。我想在Windows上执行此操作。

Bash:

I=0; for FILE in `ls -S`; do mv $FILE "$I - $FILE"; I=$((I+1)); done
狂欢节:


由于您的操作系统可能会按字母顺序列出文件,因此我建议在某些时候使用
printf
(这将生成“0001-file1.mp3”、“0002-file2.mp3”等)。要更改填充0的数量,请在printf%04d中使用另一个数字

N=1  
while read -r file
do
  mv "$file" "$(printf %04d $N) - $file"
  N=$((N+1))
done < "$(ls -S)"
N=1
读取-r文件时
做
mv“$file”“$(printf%04d$N)-$file”
N=$((N+1))
完成<“$(ls-S)”

(或者使用
“$(ls-rS)”
如果您想要反向排序(从大到小)。

由于您的操作系统可能会按字母顺序列出文件,我建议在某个时候使用
printf
(这将生成“0001-file1.mp3”、“0002-file2.mp3”等)。要更改填充0的数量,请在printf%04d中使用另一个数字

N=1  
while read -r file
do
  mv "$file" "$(printf %04d $N) - $file"
  N=$((N+1))
done < "$(ls -S)"
N=1
读取-r文件时
做
mv“$file”“$(printf%04d$N)-$file”
N=$((N+1))
完成<“$(ls-S)”
(如果您想要反向排序(从大到小),请使用“$(ls-rS)”

但是,不鼓励解析
ls
输出。仅当您知道文件名不包含任何异常字符时,才使用此选项


但是,不鼓励解析
ls
输出。仅当您知道文件名不包含任何异常字符时才使用此命令。

批处理文件中可以使用
FOR
命令来确定文件大小:

for %%F in (*.mp3) do echo [%%F] is [%%~zF] bytes
不过,要使其正确排序,还需要做一些工作,因为在文本排序中,大小10比大小2先出现

DIR
命令可用于按大小顺序列出文件:

dir /os *.mp3
dir /o-s *.mp3
dir /b /o-s *.mp3 > filesbysize.txt
然后您可以使用
FOR/F
读取该文件并开始执行重命名逻辑

SET/A
命令可用于执行整数数学运算,因此您可以找到一种增加计数器的方法,以确定所需的前缀

准备好使用这些命令中的每一个。学习曲线不错,但也不是零


祝您好运!

批处理文件中可以使用
FOR
命令来确定文件大小:

for %%F in (*.mp3) do echo [%%F] is [%%~zF] bytes
不过,要使其正确排序,还需要做一些工作,因为在文本排序中,大小10比大小2先出现

DIR
命令可用于按大小顺序列出文件:

dir /os *.mp3
dir /o-s *.mp3
dir /b /o-s *.mp3 > filesbysize.txt
然后您可以使用
FOR/F
读取该文件并开始执行重命名逻辑

SET/A
命令可用于执行整数数学运算,因此您可以找到一种增加计数器的方法,以确定所需的前缀

准备好使用这些命令中的每一个。学习曲线不错,但也不是零


祝你好运!

好主意。完成后告诉我们。你用bash标记了这个,你是在要求bash解决方案还是只要求Windows cmd?如果可能的话,我想在Windows上这样做。如果不是,我想在bash中这样做。因此,这不是一个放置工作单并期望它们完成的地方。这不是一种工作方式。好主意。告诉我们,什么时候你完成了。你用bash标记了这个,你是在要求bash解决方案还是只要求Windows cmd?如果可能的话,我想在Windows上这样做。如果不是,我想在bash中这样做。因此,这不是一个放置工作单并期望它们完成的地方。这不是工作方式。我尝试使用批处理脚本运行此操作,但什么都没有发生。我尝试了您的解决方案在Bash中运行得非常好,谢谢!我用Git CMD在Windows上运行了它。您的解决方案在Bash中运行得非常好,谢谢!我用Git CMD在Windows上运行了它。