我想循环一个带有简单用户号列表的文本文件......
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上找到的各种代码拼凑在一起,但我不是编码大师...因此没有运气看到错误:/
答案 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
)
)