Пакетный файл - Найти файл и заменить - PullRequest
0 голосов
/ 11 января 2019

В основном я создал пакетный файл, который копирует файл в FOLDER A, а затем переименовывает файл с датой в конце и вставляет его в FOLDER C.

До того, как это произойдет, я ищу, как настроить функцию FIND для поиска по FOLDER B, чтобы проверить, есть ли у него файл с таким же именем.

Если он содержит то же имя, что и файл в FOLDER A, я хочу скопировать этот файл, добавить дату в конец и вставить его в FOLDER C.

Позволяет сказать:

  • * WAV-файл находится в FOLDER A
  • НАЙТИ * wav-файл в FOLDER -B, чтобы увидеть, существует ли он.
  • Если * wav-файл существует
  • затем скопируйте это в FOLDER C
  • затем переименовать * wav с указанием даты в конце

Надеюсь, это имеет смысл.

1 Ответ

0 голосов
/ 11 января 2019

ЕСЛИ СУЩЕСТВУЕТ

cmd имеет встроенный IF EXIST, который проверяет, существует ли файл, и аналоговый IF NOT EXIST. (См. IF /? или ss64.com ). Что-то подобное сделает то, что вы описываете.

IF NOT EXIST "%TARGET_FILE%" COPY "%SOURCE_FILE%" "%TARGET_FILE%"

Анализ файла / пути

cmd имеет некоторые средства синтаксического анализа путей, однако все полезные функции содержатся в команде FOR (см. FOR /? или ss64.com ).

Обычно я начинаю с типичной переменной среды, например, %SOURCE_FILE%, передайте его FOR и разрешите поведению подстановки FOR получить родительский каталог, имя файла, расширение и т. Д.

Предположим, вам нужно базовое имя файла (без директории). Вы можете сделать это следующим образом:

FOR /F "tokens=*" %%f IN ("%SOURCE_FILE%") DO SET "SOURCE_FILE_BASE=%%~ff"

Теперь SOURCE_FILE_BASE будет содержать базовое имя файла. (Примечание: синтаксис FOR изменяется при его использовании в сценарии по сравнению с интерактивной оболочкой. Использование %% - это то, что нужно сценарию.)

Комбинированное

Исходя из того, что вы описываете, предположим, что у вас есть путь к файлу, сохраненному в SOURCE_FILE, и каталог, в который вы хотите скопировать файл, TARGET_DIR, вы можете выполнить то, что вы описываете, выполнив что-то вроде:

FOR /F "tokens=*" %%f IN ("%SOURCE_FILE%") DO SET "SOURCE_FILE_BASE=%%~ff"
SET "TARGET_FILE=%TARGET_DIR%\%SOURCE_FILE_BASE%"
IF NOT EXIST "%TARGET_FILE%" COPY "%SOURCE_FILE%" "%TARGET_FILE%"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...