在批处理脚本中更改文件名

问题描述 投票:0回答:3

我需要在批处理脚本中更改文件名。

以下是我制作的样品

SET date = 20210803
SET job = 69187

cd "H:\arbortray foldher\"
for %%i in (*.txt*) do REN %%i randum_%job%-text-%date%%%i

它不工作;什么也没做。我希望它将特定文件名从通用版本更改为使用整个脚本中使用的全局定义变量的文件名。该文件已从另一个将该文件制作到此文件夹中的程序移动。我无法在这些步骤中将变量包含在文件名中。我想将这些命令作为更大脚本的一部分包含在内,该脚本使用变量执行其他操作。具体来说,在这种情况下,我需要命令将文件从通用版本重命名为包含脚本中先前定义的变量的版本。这些变量每周都会发生变化。

batch-file batch-processing batch-rename
3个回答
0
投票

问题是:

A) 您的变量名称中将包含空格。
B) CD 命令需要

/d

C) for in do 有一个错误,必须通过更改扩展名并稍后恢复它来解决。

@echo off
SET date=20210803
SET job=69187

cd /d "H:\arbortray foldher\"
for %%i in (*.txt) do REN "%%i" "randum_%job%-text-%date%%%~ni.tmp"
ren *.tmp *.txt
echo done
pause

空格导致了问题,在重命名命令中,您需要双引号来满足空格。


0
投票

看看跨平台renamer工具..


0
投票

你的例子不安全:

  • 日期(这不是一个好的做法)
  • md itdir.txt
  • ren %UNICODECHARS% %
    insecure?
    %

答案:

@echo off
chcp 65001 >NUL 2>NUL.

set "v_date=20210803"
set "v_job=69187"
set "v_dir=%cd%"

for /f "tokens=* delims=" %%s in ('dir /b /a-d "%v_dir%" ^| findstr /i /e /c:".txt"') do @ren "%v_dir%\%%s" "randum_%v_job%-text-%v_date%%%s"

忘记了

/d
cd
))

maybay 您的意思是

-
结果中的“randum_69187-text-20210803
example
example.txt”?

© www.soinside.com 2019 - 2024. All rights reserved.