WedX - журнал о программировании и компьютерных науках

Передача относительного пути в вызываемом пакетном файле

Мне нужно вызвать файл zipjs.bat, который принимает путь в качестве аргумента. Я вызываю файл .bat через другой файл .bat с именем start.bat. Оба файла не находятся в одном и том же месте в файловой системе, они находятся в разных папках.

zipjs.bat находится в \batch, а start.bat — в \odt.

Файл, который нужно передать в качестве аргумента в zipjs.bat, находится в той же папке, что и start.bat.

Таким образом (используя абсолютный путь для -source) все работает нормально:

call ..\batch\zipjs.bat unzip -source C:\Users\rmrd001\git\xslt-framework\Product\dita\transformations\paragraphs\odt\source.odt.zip -destination .\MyDir -keep yes -force no
pause

Выше -source принимает абсолютный путь. Но когда я меняю абсолютный путь на относительный, вот так: -source .\source.odt.zip это не работает. Я пробовал с путями относительно start.bat - .\source.odt.zip и относительно zipjs.bat - ..\odt\source.odt.zip, но безуспешно.

17.11.2015


Ответы:


1

Возможно, самым простым методом будет использование %~dp0, который расширяется до пути start.bat, заканчивающегося обратной косой чертой, как это предлагает Squashman.

Я предлагаю дополнительно очистить каталог для временных файлов после выполнения распаковки, поскольку zipjs.bat в настоящее время обновляется в последний раз в 2015- 03-17 от npocmaka этого не делает, см. ответ на Как написать пакетный файл, который может разархивировать файл в новую папку с тем же именем?

@echo off
call ..\batch\zipjs.bat unzip -source "%~dp0source.odt.zip" -destination .\MyDir -keep yes -force no
for /F "delims=" %%D in ('dir /AD /B "%TEMP%\*source.odt.zip" 2^>nul') do (
    %SystemRoot%\System32\attrib.exe -h "%TEMP%\%%~D"
    rd /S /Q "%TEMP%\%%~D" 2>nul
)
pause
17.11.2015
  • После запуска цикла for остается файл с именем nul), и дальнейшая команда не выполняется в файле bat. 18.11.2015
  • Вы уверены, что используете код ТОЧНО, как я написал? Вы пробовали эти 7 строк? Я предполагаю, что вы используете немного другой пакетный файл с перенаправлением возможных сообщений об ошибках команды dir на устройство nul неправильно, что приводит к перенаправлению вывода в файл nul). Пожалуйста, проверьте свой код и сравните его с моим кодом посимвольно. 18.11.2015
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]