Это то, что я написал так далеко от битов, которые я использовал в прошлом. У меня есть базовые знания, я строю и исследую вещи по ходу дела.

В настоящее время я получаю синтаксическую ошибку после переименования / копирования эха.

Можете ли вы помочь?

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

2 ответа2

1

В этом скрипте много ошибок.

for /F "tokens = *" %% 1 in (pc_list.txt) do (

for операторов необходимо использовать альфа-значение для переменной (см. документацию 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, с которой я связан.

0

спасибо, похоже, это сработало

for /F "tokens = *" %% a in (pc_list.txt) do (

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"
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .