批处理文件循环遍历文本文件并根据每一行创建两个变量

时间:2014-07-01 15:16:17

标签: batch-file

我想循环一个带有简单用户号列表的文本文件......

e.g。

002
003
004
005

...并根据每一行创建两个变量 - 第一个是全数(例如002),第二个是前导零被剥离(例如2)。

到目前为止,我的示例脚本是;

REM  *******************************
REM  Get User number from text File
REM  *******************************

for /F %%x in (C:\Scripts\users.txt) do (
set host=%%x

REM  ********************************************************
REM  Remove Leading Zero's from user number if less than 100
REM  ********************************************************

for /F "tokens=* delims=0" %%A IN ("%host%") DO SET host=%%A

REM  *************************************
REM  Set User IP Address from user number
REM  *************************************

set userip=18.10.%host%.100

net use Z: \\%userip%\d$ /user:%%xcom\master password
xcopy "\\%userip%\d$\Time Sheet" "\\networklocation\users\%%xcom\Time Sheet" /E /C /R /I /K /Y
net use Z: /delete

)

一旦我尝试运行批处理文件,它立即关闭,告诉我它在某处失败了!

我们的想法是遍历所有用户,根据用户名创建到IP地址的映射驱动器,然后将时间表数据库从本地计算机复制到网络位置。

我已经尝试将我在t'internet上找到的各种代码拼凑在一起,但我不是编码大师...因此没有运气看到错误:/

1 个答案:

答案 0 :(得分:1)

使用for metavariables或实现delayed expansion,因为你不能在循环中set and use变量。

REM  *******************************
REM  Get User number from text File
REM  *******************************

for /F %%x in (C:\Scripts\users.txt) do (

REM  ********************************************************
REM  Remove Leading Zero's from user number if less than 100
REM  ********************************************************

for /F "tokens=* delims=0" %%A IN ("%%x") DO (

REM  *************************************
REM  Set User IP Address from user number
REM  *************************************


net use Z: \\18.10.%%A.100\d$ /user:%%xcom\master password
xcopy "\\18.10.%%A.100\d$\Time Sheet" "\\networklocation\users\%%xcom\Time Sheet" /E /C /R /I /K /Y
net use Z: /delete
)
)