Замена имен файлов, которые могут отличаться для конкретных имен в строках - PullRequest
0 голосов
/ 07 мая 2019

Я хотел создать скрипт для автоматизации процесса и преуспел в этом.Дело в том, что каждый раз, когда я хочу использовать его, мне нужно заменить имена файлов в строках на новые.Я уверен, что есть способ сделать это один раз (возможно, с использованием подстановочных знаков или около того).Я новичок в этом деле: p

Не могу ничего понять.

move /y "\\enterprise\TCP\CLIENT\BASENAME.CHR" "\\enterprise\PR\CLIENT"
move /y "\\enterprise\TCP\CLIENT\BASENAME.HED" "\\enterprise\PR\CLIENT"
move /y "\\enterprise\CP\CLIENT\BASENAME.PRD" "\\enterprise\PR\CLIENT"
move /y "\\enterprise\TCP\CLIENT\BASENAME.IDX" "\\enterprise\PR\CLIENT"
move /y "\\enterprise\TCP\CLIENT\BASENAME.INF" "\\enterprise\PR\CLIENT"
move /y "\\enterprise\TCP\CLIENT\BASENAME.TAD" "\\enterprise\PR\CLIENT"

del \\enterprise\TCP\LOG\BASENAME.CHK
copy "\\enterprise\PR\CLIENT\BASENAME.HED" "\\enterprise\PR\CLIENT\BASENAME.NEW"

Я хотел бы добавить строку, которая заменит все BASENAME (расширения должны быть такими же, как указано выше) во всех строках, скажем, ABCD.Это сэкономило бы мне время на изменение имени файла с BASENAME на ABCD для каждой строки каждый раз, когда я хочу запустить скрипт.Есть идеи?

Ответы [ 3 ]

1 голос
/ 07 мая 2019
move /y "\enterprise\TCP\CLIENT\%~1.CHR" "\enterprise\PR\CLIENT"

и затем поставьте abcd в пакет в качестве первого параметра.Выполните ваш пакет как

yourbatchname abcd

и, возможно, улучшите его, используя

for %%a in (CHR HED PRD IDX inf tad) do move /y "\enterprise\TCP\CLIENT\%~1.%%a" "\enterprise\PR\CLIENT"

, где %%a будет заменен каждым изстроки в скобках и %1 по первому параметру, как указано выше

0 голосов
/ 07 мая 2019

Если я правильно вас понял, вы хотите переместить все файлы BASENAME.* в ABCD.* и переместить их в другую папку? Тогда вы можете просто сделать myscript.cmd :

ren "\\enterprise\TCP\CLIENT\%~1.*" "%~2.*"
move /y \\enterprise\TCP\CLIENT\%~2.* "\\enterprise\PR\CLIENT\"
del /Q "\\enterprise\TCP\LOG\%~1.CHK"
copy \\enterprise\PR\CLIENT\%~2.HED" "\\enterprise\PR\CLIENT\%~2.NEW"

затем запустите его как.

myscript.cmd BASENAME NEWNAME

, который затем будет принимать любой файл с именем BASENAME и переименовывать в NEWNAME (где BASENAME и NEWNAME могут быть любым, что вы вводите.

В качестве альтернативы вы можете использовать его для двойного щелчка:

set /p basename=Enter name to replace:
set /p newname=Enter new name:
ren "\\enterprise\TCP\CLIENT\%basename%.*" "%newname%.*"
move /y \\enterprise\TCP\CLIENT\%newname%.* "\\enterprise\PR\CLIENT\"
copy \enterprise\PR\CLIENT\%newname%.HED" \\enterprise\PR\CLIENT\%newname%.NEW"
del /Q "\\enterprise\TCP\LOG\%basename%.CHK"

Теперь вы можете дважды щелкнуть файл, и он попросит вас ввести.

0 голосов
/ 07 мая 2019

Я не совсем уверен, что получил ваш вопрос, но вы могли бы использовать переменные.

Пример:

setlocal
set filename=%~1

move /y "\\enterprise\TCP\CLIENT\%filename%.CHR" "\\enterprise\PR\CLIENT"
...
copy "\\enterprise\PR\CLIENT\%filename%.HED" "\\enterprise\PR\CLIENT\%filename%.NEW"

Затем вы вызываете свой пакетный файл, скажем myrename.cmd, какитак:

C:\> myrename.cmd BASENAME
C:\> myrename.cmd ABC
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...