как выполнить поиск файла по нескольким путям и вставить его в другие места с помощью пакетного файла

#file #batch-file

#файл #пакетный файл

Вопрос:

Мне нужно выполнить поиск файла по двум путям: program files или program files x86, скопировать файл и вставить его в другое место.

Теперь я использовал скрипт как

 @echo off
xcopy C:"Program Files (x86)"Adobe"Adobe Presenter 10.0""Gallery""interactions""Collaboration" %~dp0 /e /h /k /o /y
Echo Files copied!
pause
 

Ценю любую помощь в этом.

Ответ №1:

Вы должны исправить свои кавычки. В начале и конце каждого пути должны быть только кавычки. Вот так:

 "C:Program Files (x86)AdobeAdobe Presenter 10.0GalleryinteractionsCollaboration"
 

Вы также можете захотеть заключить его в кавычки:

 "%~dp0"
 

в случае, если в пути есть пробелы.

Я бы, наверное, просто сделал быстрый и простой скрипт, например:

 @echo off
if exist "C:Program Files (x86)AdobeAdobe Presenter 10.0GalleryinteractionsCollaboration" (
    xcopy "C:Program Files (x86)AdobeAdobe Presenter 10.0GalleryinteractionsCollaboration" "%~dp0" /e /h /k /o /y
    echo copied from Program Files (x86)
)
if exist "C:Program FilesAdobeAdobe Presenter 10.0GalleryinteractionsCollaboration" (
    xcopy "C:Program FilesAdobeAdobe Presenter 10.0GalleryinteractionsCollaboration" "%~dp0" /e /h /k /o /y
    echo copied from Program Files
)
pause
 

Ответ №2:

 @echo off
rem Define an environment variable with folder name for easier reading and changing in future.
set "MyFolder=AdobeAdobe Presenter 10.0GalleryinteractionsCollaboration"
if exist "%ProgramFiles(x86)%%MyFolder%" (
   xcopy "%ProgramFiles(x86)%%MyFolder%" "%~dp0" /e /h /k /o /y
   echo Files copied!
) else (
   if exist "%ProgramFiles%%MyFolder%" (
      xcopy "%ProgramFiles%%MyFolder%" "%~dp0" /e /h /k /o /y
      echo Files copied!
   )
)
rem Not really necessary here, but good practice is to delete finally the temporary used environment variable.
set MyFolder=
 

Для получения подробной информации о команде IF откройте окно командной строки и введите IF /? , чтобы получить отображаемую справку об этой команде.

Переменная enviroment ProgramFiles(x86) по умолчанию установлена во всех 64-разрядных версиях Windows, но не существует в 32-разрядных версиях Windows.

Переменная enviroment ProgramFiles существует для 32- и 64-разрядных версий Windows.

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