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

时间:2015-07-27 13:24:03

标签: batch-file scripting

提前感谢您提供的任何帮助。

我有一个批处理文件,我想从哪个名称使用部件并将它们指定为变量。使用带有delims的for /f我能够做类似的事情,但我必须将文件重命名为不同于我需要的方案。 这是我的所在:

- 当前文件名: WHID-PRT-MFP-3,NORTH EAST 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

欢迎任何想法。

由于

2 个答案:

答案 0 :(得分:1)

  

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

答案 1 :(得分:0)

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