这是我迄今为止根据过去使用过的内容编写的脚本。我掌握了基础知识,并在编写过程中构建和研究事物。
我目前在回显重命名/复制后收到语法错误。
你能帮忙吗?
echo SWIFT UPDATER
echo off
echo off
echo Ready to go?
pause
for /F "tokens=*" %%1 in (pc_list.txt) do (
echo Renaming / Copying files to %
Ren /f "\\%%1\c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.txt" "c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.old"
copy "\\server\infratech\Servereng\APPS-UK\Swift Update\wsnaddr.txt" "\\%%1\c$\Program Files (x86)\SWIFT\NSL\jnsl\" >> "\\server\infratech\Servereng\APPS-UK\Swift Update\log.txt"
)
:::: End Copy ::::::
@echo off
答案1
这个脚本有很多错误。
对于/F“tokens=*”%%1在(pc_list.txt)中执行(
for
语句必须使用 alpha 值作为变量(参见MS 文档)。不是数字变量 - 数字变量被保留用于传递给批处理文件的参数。
尝试一下这样的方法。
for /F "tokens=*" %%a in (pc_list.txt) do (
和 ...
echo 重命名/复制文件至 %
需要更改为
echo Renaming /Copying files to %%a
和...
Ren /f "\%%1\c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.txt" "c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.old"
需要更改为:
IF EXIST "\\%%a\c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.old" del /f /q "\\%%a\c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.old"
ren "\\%%a\c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.txt" wsnaddr.old
因为没有/f
参数,第二个参数应该是一个简单的文件名,而不是完整的路径(见MS 文档) 。(当然,我已经将其更改%%1
为匹配新%%a
变量)
我也对所有语句感到困惑。通常脚本开头echo off
只有一个语句。但是,这不应该导致任何错误。它只是有时会造成输出混乱。@ECHO OFF
<command> /?
如果您还没有发现这一点,我建议您查看命令行的输出。它应该包含与我链接到的 MS 文档相同的信息。
答案2
谢谢,这似乎有效
对于/F“tokens=*”%%a在(pc_list.txt)中执行(
ren "\%%a\c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.txt" wsnaddr.old
copy "\\server\infratech\Servereng\APPS-UK\Swift Update\wsnaddr.txt" "\\%%a\c$\Program Files (x86)\SWIFT\NSL\jnsl\" >> "\\server\infratech\Servereng\APPS-UK\Swift Update\log.txt"
)