【问题标题】:append files name with part of the name of the folder using command prompt使用命令提示符将文件名附加到文件夹名称的一部分
【发布时间】:2019-07-19 08:15:49
【问题描述】:

我需要使用命令提示符重命名很多文件,我想使用命令提示符(因为我无法安装第三方软件或 python 等)

我尝试编写一些命令提示符脚本,它似乎可以工作,但只是缺少点睛之笔。问题是我的脚本以某种方式用最后一个文件夹名称重命名所有文件,而不是迭代

for /d %i in ("C:\Users\noir1\Desktop\New folder\*") do ( cd "%i" & set _test=%i & for %a in (*) do ren "%a" "%_test:~34,13% %a")

我有什么: 在“新文件夹”中还有 4 个文件夹:

  1. “新建文件夹 1xxxx” 在这个文件夹中,我有“file1”、“file2”、“file3”
  2. “新建文件夹 2xxxx” 在这个文件夹中,我有“file1”、“file2”、“file3”
  3. “新建文件夹 3xxxx” 在这个文件夹中,我有“file1”、“file2”、“file3”
  4. “新建文件夹 4xxxx” 在这个文件夹中,我有“file1”、“file2”、“file3”

我想在所有文件夹中查看文件 1、文件 2、文件 3 的名称以根据父文件夹进行更改:

  1. “新建文件夹 1xxxx” 在这个文件夹中,我有“新文件夹 1 文件 1”、“新文件夹 1 文件 2”、“新文件夹 1 文件 3”
  2. “新建文件夹 2xxxx” 在这个文件夹中,我有“新文件夹 2 文件 1”、“新文件夹 2 文件 2”、“新文件夹 2 文件 3” 等等

但是如果我使用上面的脚本,我得到了

  1. “新建文件夹 1xxxx” 在这个文件夹中,我有“新文件夹 4 文件 1”、“新文件夹 4 文件 2”、“新文件夹 4 文件 3”
  2. “新建文件夹 2xxxx” 在这个文件夹中,我有“新文件夹 4 文件 1”、“新文件夹 4 文件 2”、“新文件夹 4 文件 3”

【问题讨论】:

  • 你有一个delayed expansion problem。您是否需要直接在命令行上执行而不是使用批处理文件?
  • @Stephan 嗨,我是一个完整的新手,试图深入编码,如何批处理文件?
  • 让我告诉你答案。给我几分钟

标签: cmd


【解决方案1】:

cmd 语言是可编写脚本的(称为批处理脚本或批处理文件)。只需将命令放入扩展名为 .bat 的文本文件中即可。然后,您只需输入其名称即可执行整个脚本。

命令行的批处理脚本版本可能如下所示:

@echo off
setlocal enabledelayedexpansion
for /d %%i in ("C:\Users\noir1\Desktop\New folder\*") do (
  cd "%%i" 
  set "_test=%%i"
  for %%a in (*) do ECHO ren "%%a" "!_test:~34,13! %%a"
)

注意:某些命令在批处理文件中使用的语法可能略有不同(尤其是for 在命令行中使用%a 类型变量,而在批处理文件中则必须使用%%a)。

注意:我通过回显 ren 命令禁用了它。如果您对结果满意,只需删除ECHO 以启用ren 命令。

优点:每次您想做某事时无需输入相同的代码,从而避免输入错误
通过格式化读取代码
可重复使用
包含大量命令的大型脚本。

我建议收藏SS64 并定期访问。

【讨论】:

  • 很好地让它工作,是的,批处理似乎更可持续,非常感谢你
猜你喜欢
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
  • 2020-08-29
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
相关资源
最近更新 更多