拆分自己的文件名并将特定部分分配给批处理脚本中的变量

Split own filename and assign specific parts to variables in a batch script

在此先感谢您提供的任何帮助。

我有一个批处理文件,我想使用其中的名称并将它们分配为变量。使用 for /f with delims 我能够做类似的事情,但我必须将文件重命名为与我需要的不同的方案。 这是我所拥有的:

-当前文件名:WHID-PRT-MFP-3,东北 OFFICE.bat

SET getname=%~n0

for /f "tokens=1 delims=-" %%G IN ("%getname%") DO (SET siteid=%%G)

for /f "tokens=1 delims=," %%E IN ("%getname%") DO (SET name=%%E) 

SET printername=%name%

SET servername=Server-%siteid%-01

好的,所以这似乎工作正常,我能够从文件名中获取我需要的部分并将它们分配给变量,以便 %name%=WHID-PRT-MFP-3%siteid%=WHID

现在我的困境是我需要文件名是:NORTH EAST OFFICE, WHID-PRT-MFP-3.bat 因此,我一直在尝试将逗号(WHID-PRT-MFP-3)后面的整行获取到一个变量,将破折号(WHID)中的第一项获取到另一个变量,与上面的示例相同,但无法计算出来。这将与多个名称一起使用,因此不仅如示例所示,我还可以为两个部分使用更短或更长的名称,例如:WHID-PRT-1, OFFICE 1

欢迎提出任何想法。

谢谢

for /f  "tokens=1,2 delims=,." %%i in ("WHID-PRT-MFP-3, NORTH EAST OFFICE.bat") do set newname=%%j,%%i.bat

NORTH EAST OFFICE, WHID-PRT-MFP-3.bat:

SET getname=%~n0

rem split at comma
for /f "tokens=2 delims=," %%E IN ("%getname%") DO (

    rem trim space after comma
    for /f "tokens=*" %%S IN ("%%E") DO SET name=%%S

    rem get word before hyphen and strip leading space
    for /f "tokens=1 delims=- " %%S IN ("%%E") DO set siteid=%%S
)

SET printername=%name%
SET servername=Server-%siteid%-01