COPY, XCOPY, ROBOCOPY - копировать полный путь к файлу в полный путь к папке - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь использовать список полных путей к файлам (в основном уникальных) (например, "C: \ Folder1 \ file_1.xls") для копирования в полные пути к папкам (например, "C: \ DifferentFolder).

И полный путь к файлу, и полный путь к папке отличаются в зависимости от строки. Я выполнил это с помощью COPY в основном успешно, поместив все пути в кавычки.

COPY "E:\California\CA_restaurants.pdf" "E:\Placestoeat\"
COPY "E:\California\CA_hotels.pdf" "E:\Placestostay\"
COPY "E:\Arizona\AZ_hotels.pdf" "E:\Placestostay\"

Проблема с продолжением использования этогоявляется то, что я обнаружил, что у меня есть только около 95% успеха, когда я смотрю на # файлов до и после завершения .bat файла. Я не уверен, в чем проблема, но я рассматриваю переключениев Robocopy или xcopy, как я слышал, они могут дать отзыв об успехе И возможность переименовать дубликаты файлов ??

Дело в том, что я не могу заставить работать xcopy или robocopy на основе полного файлаимена и полные имена папок, которые меняют каждую строку.

Может кто-нибудь объяснить, что я делаю неправильно, или дать пример сценария для меня, чтобы я попробовал? Я не технарь, просто пытаюсь найти способсделать мой мирский исторический дАта проект более эффективен.

1 Ответ

0 голосов
/ 01 февраля 2019

Если вы откроете cmd.exe и наберете xcopy /?, вы увидите все действительные ключи, я не уверен, какие команды xcopy вы пробовали, но это должно работать без сомнения:

xcopy /Y "E:\folder paths\file.pdf" "E:\Placetostay"

Мне, однако, интересно, зачем вам нужно добавлять каждую строку в файл, который вы хотите скопировать?Это много ручной работы, настолько, что было бы проще просто скопировать ее вручную.Так почему бы не автоматизировать это?

Вот несколько идей.Этот скрипт выполнит рекурсивный поиск на вашем диске E:\, если какой-либо файл соответствует имени hotel, он скопирует его в соответствующий пункт назначения, если только искомый файл не находится в месте назначения, просто потому, что мы не хотимскопируйте файл по его собственному пути снова. Очевидно, что второй вариант сделает это и для restaurants:

Отели:

@echo off
for /f %%i in ('dir /s /b /a-d *.pdf ^| findstr /i hotel') do (
  if not "%%~dpi"=="E:\Placestostay\" xcopy "%%~fi" "E:\Placestostay"
)

Рестораны:

@echo off
for /f %%i in ('dir /s /b /a-d *.pdf ^| findstr /i restaurant') do (
  if not "%%~dpi"=="E:\Placestostay\" xcopy /Y "%%~fi" "E:\Placestoeat"
)

Очевидно, что и вышесказанное можно комбинировать.

Затем мы можем сделать то же самое, но позволить вам выбрать, что искать, предложив пользователю критерии поиска:

@echo off
set /p "search=Select search type (hotel, restaurant etc.): "
set /p "destination=Enter the destination to copy to (E:\placestoeat\ etc.): "
for /f %%i in ('dir /s /b /a-d *.pdf ^| findstr /i %search%') do (
  if not "%%~dpi"=="%destination%" xcopy /Y "%%~fi" "%destination%"
)

Илианалогично, предварительно определите папку назначения на основе поиска:

@echo off
set /p "search=Select search type (hotel, restaurant etc.): "
if /i "%search%"=="hotel" set "destination=E:\placestostay\"
if /i "%search%"=="restaurant" set "destination=E:\placestoeat\"
for /f %%i in ('dir /s /b /a-d *.pdf ^| findstr /i %search%') do (
  if not "%%~dpi"=="%destination%" xcopy /Y "%%~fi" "%destination%"
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...