我需要在批处理脚本中更改文件名。
以下是我制作的样品
SET date = 20210803
SET job = 69187
cd "H:\arbortray foldher\"
for %%i in (*.txt*) do REN %%i randum_%job%-text-%date%%%i
它不工作;什么也没做。我希望它将特定文件名从通用版本更改为使用整个脚本中使用的全局定义变量的文件名。该文件已从另一个将该文件制作到此文件夹中的程序移动。我无法在这些步骤中将变量包含在文件名中。我想将这些命令作为更大脚本的一部分包含在内,该脚本使用变量执行其他操作。具体来说,在这种情况下,我需要命令将文件从通用版本重命名为包含脚本中先前定义的变量的版本。这些变量每周都会发生变化。
问题是:
A) 您的变量名称中将包含空格。
B) CD 命令需要
/d
@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
空格导致了问题,在重命名命令中,您需要双引号来满足空格。
看看跨平台renamer工具..
你的例子不安全:
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-20210803example
example.txt”?