我想从目录(C:\ TSData \ Klarf)并更改它们的名称,然后将它们移动到新目录(E:\ MESSDAT \ DATEN \ Klatencor \ Klarf)。读取目录中所有* .kla文件的文件名,重命名并将它们批量移动到新目录中
对于文件名重命名,在每个.kla文件中,有两个变量需要获取它们的值:(例如) LotID“N_123”;插槽1; 并结合这些变量:LotID_Slot.kla创建一个新名称。
我写了这个代码,但显示了这个错误:“NXI〜就在这个时候意外”
@echo off
setlocal enableDelayedExpansion
set "LotID="
set "Slot="
:: Finding the name of *.kla files in C:\TSData\Klarf\
for /f %%l in ('dir /b C:\TSData\Klarf\*.kla ') do (
echo %%l
:: Finding LotID, Slot in each .kla file
for /R C:\TSData\Klarf\ %%i in (*.*) do echo %%~nxi
for /f "usebackq tokens=1,*" %%a in (
"C:\TSData\Klarf\%%l"
) do for %%c in (%%b) do set "%%a=%%~c"
move /-y "C:\TSData\Klarf\%%l" "E:\MESSDAT\DATEN\Klatencor\Klarf"
ren E:\MESSDAT\DATEN\Klatencor\Klarf\%%l "%LotID%_%Slot%.kla"
)
考虑,在C:\ TSData \ KLARF \有一个文件名执行后= 1.kla的路径文件,这个文件将被重命名为k1_1.kla(因为对于这个文件,我们有LotID = k1,Slot = 1),并将移动到名为E:\ MESSDAT \ DATEN \ Klatencor \ Klarf \的新目录,其新名称k1_1.kla)。
我不知道为什么这个以下为单独工作清楚.kla文件。
:: Finding LotID, Slot in each .kla file
for /R C:\TSData\Klarf\ %%i in (*.*) do echo %%~nxi
for /f "usebackq tokens=1,*" %%a in (
"C:\TSData\Klarf\K.kla"
) do for %%c in (%%b) do set "%%a=%%~c"
move /-y "C:\TSData\Klarf\k.kla" "E:\MESSDAT\DATEN\Klatencor\Klarf"
ren E:\MESSDAT\DATEN\Klatencor\Klarf\k.kla "%LotID%_%Slot%.kla"
请帮助我。 非常感谢!
你忘了你的第二个'for'loop的百分号翻番:'%% i','%%〜nxi' – Stephan 2014-10-11 14:55:32
感谢我亲爱的为你的关注,我申请了你告诉我的。但是,将.kla文件移动到新目录后,其名称未正确更改。文件名称变为_。 KLA。我认为这些变量(LotID,SLOT)为空。什么问题亲爱的? – 2014-10-11 16:52:13
您必须将环境变量放在感叹号中,而不是百分号,以便根据需要在“IF”和“FOR”块中使用延迟的环境变量扩展。打开命令提示符窗口,输入'set /?',并读取窗口中输出的所有帮助页面。请编辑您的问题,并在批处理执行前在'C:\ TSData \ Klarf'中添加文件名列表,以及另外两个列表显示目录'C:\ TSData \ Klarf'和'E:\ MESSDAT \ DATEN中的文件名\批次执行后的\ Klatencor \ Klarf'。否则,我们没有机会找出你的批处理代码应该做什么。 – Mofi 2014-10-11 20:19:42