使用输入批量更改任何文件的名称

时间:2017-08-28 09:23:34

标签: batch-file

我想创建一个批处理文件来更改文件夹中的每个PDF文件。

PDF有一个随机数,在以下情况后应如下所示:

id_3Q09_iid_1_dat_04-01-2017_nm-SUB_certificate.pdf

我想输入" 3Q09" " 1" (IDD)和日期。

因此,当我打开批处理文件时,我会得到一个关于ID,IDD和日期应该是什么的问题,并且它会更改文件夹中的每个PDF文件。

我尝试了一些脚本,但他们都尝试重命名一个已知文件 这是我使用的脚本:

@Echo off
setlocal enabledelayedexpansion 
set /p ID="Product ID: " 
set /p IID="IID: " 
set /p Datum="Keuringsdatum: "
Rn "!Name:id_%ID%_%IID%_dat_%Datum%_nm-SUB_certificate.!" )

1 个答案:

答案 0 :(得分:0)

我不太确定这是否与您打算做的完全相同,但您可以使用for循环来遍历特定文件夹中的所有PDF文件。

<强>批处理文件

@(setlocal disabledelayedexpansion
  set "source=folder\*.pdf"
  set /p "id=Product ID: "
  set /p "iid=IID: "
  set /p "dat=Date: "
  prompt $
)

@for %%e in ("%source%") do rename "%%~fe" "id_%id%_iid_%iid%_dat_%dat%_nm-%%~nxe"
@prompt

示例输出

Product ID: 3Q09
IID: 1
Date: 04-01-2017

rename "d:\pdf\folder\SUB_certificate.pdf" "id_3Q09_iid_1_dat_04-01-2017_nm-SUB_
certificate.pdf"

rename "d:\pdf\folder\test (!!^^!!) file.pdf" "id_3Q09_iid_1_dat_04-01-2017_nm-t
est (!!^^!!) file.pdf"
  

重命名后,我希望他们剪切并粘贴到其他文件夹。   我可以用MV命令吗?

如果要在重命名文件时将文件移动到另一个文件夹,则可以使用move命令。请注意move命令的帮助消息中的以下内容:

  

如果您只移动一个文件,则还可以包含文件名   你想在移动文件时重命名该文件。

批处理文件(移动而不是重命名)

@(setlocal disabledelayedexpansion
  set "source=folder\*.pdf"
  set "dest=output"
  set /p "id=Product ID: "
  set /p "iid=IID: "
  set /p "dat=Date: "
  prompt $
)

@for %%e in ("%source%") do move "%%~fe" "%dest%\id_%id%_iid_%iid%_dat_%dat%_nm-%%~nxe"
@prompt