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