Повторите тот же процесс на моем скрипте для разных файлов - PullRequest
0 голосов
/ 13 мая 2019

Я создал скрипт для выполнения ряда действий над конкретными файлами.Существуют параметры для выполнения этих конкретных действий с файлами с именем %filename%.Я хотел бы иметь возможность добавить более одного файла одновременно.Любые идеи?

set /p filename=Enter database to replace:

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.CHR" "\\enterprise\INFACTPR\CLIENT"

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.HED" "\\enterprise\INFACTPR\CLIENT"

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.PRD" "\\enterprise\INFACTPR\CLIENT"

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.IDX" "\\enterprise\INFACTPR\CLIENT"

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.INF" "\\enterprise\INFACTPR\CLIENT"

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.TAD" "\\enterprise\INFACTPR\CLIENT"

del \\enterprise\INFACT\INFACTCP\LOG\%filename%.CHK

copy "\\enterprise\INFACTPR\CLIENT\%filename%.HED" "\\enterprise\INFACTPR\CLIENT\%~1.NEW"

Я хотел бы иметь возможность добавить более одного значения для замены на %filename%.Предположим, что когда мне предложат Введите базу данных для замены , я мог бы добавить ABC, ABC1, и процесс будет выполняться индивидуально для всех файлов с именами ABC и ABC1.

Ответы [ 2 ]

1 голос
/ 13 мая 2019

используйте цикл for для разбора вашей строки:

set /p "filename=database(s)? "
for %%a in (%filename%) do (
  echo "\\enterprise\INFACTCP\CLIENT\%%~a.CHR" "\\enterprise\INFACTPR\CLIENT"
)

Попробуйте с hello world или simple "two words"

0 голосов
/ 13 мая 2019
@echo off
setlocal

set "clientdir=\\enterprise\INFACTCP\CLIENT"
set "newfilename=%~1"

set /p "fileset=Enter database to replace: " || exit /b 0

for %%A in (%fileset%) do (
    for %%B in (CHR HED PRD IDX INF TAD) do (
        if "%%~B" == "HED" if defined newfilename (
            copy "%clientdir%\%%~A.%%~B" "%clientdir%\%newfilename%.NEW"
        )
        move /y "%clientdir%\%%~A.%%~B" "%clientdir%\"
    )
    del "\\enterprise\INFACT\INFACTCP\LOG\%%~A.CHK"
)

В приглашении ввода вы можете ввести имена, т.е. card "my book" chain key. Это имена card, my book, chain и key с двойным цитаты с них сняты. Если ничего не введено, скрипт выйдет, с помощью exit /b 0.

1-й цикл for установит для каждого имени значение %%A. 2-х вложенная for петля установит %%B для каждого добавочного номера. Расширение HED необходимо скопировать до его перемещения, иначе он не будет существовать для копии, поэтому он копируется до того, как произойдет какое-либо перемещение. Имя файла с расширением CHK будет быть удаленным. Циклы будут продолжаться, пока весь набор файлов не будет завершен.

Просмотр for /? набора файлов ( set ), который находится в самом верху.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...