964 / 331 / 47
Регистрация: 30.01.2015
Сообщений: 1,440
1

Использование команды Chdir (Cd)

27.02.2016, 01:59. Показов 3934. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Заметил, что некоторые используют такую команду:
Windows Batch file
1
CD /d "%~dp0."
т.е. ставят точку в конце. Зачем это делается? без точки в конце в каких-то случаях может некорректно сработать?
Ну и еще вопрос про использование батника, если он находится в сети. Я так понимаю такая команда не будет работать, т.к. cd не поддерживает unc-пути. Какую тогда лучше использовать команду? pushd/popd? Только вот читал о них и не совсем понял как правильно их использовать.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2016, 01:59
Ответы с готовыми решениями:

Многоразовое использование команды
Вот выполняю команду(для копирования папок и файлов из каталога) xcopy "E:\новая папка" "F:\новая...

Использование вложенной команды FOR
Всем доброго времени суток! есть каталог с подкаталогами, есть файл tamplate.txt. Хочу добиться...

Использование команды Echo
Здравствуйте.. почему такая команда не работает лог пустой ...почему? спасибо.

Повторное использование команды PAUSE
Возникла такая проблема: в скрипте есть необходимость использовать команду pause несколько раз....

5
724 / 323 / 133
Регистрация: 17.03.2014
Сообщений: 811
27.02.2016, 02:28 2
Лучший ответ Сообщение было отмечено V1RTuE как решение

Решение

Цитата Сообщение от V1RTuE Посмотреть сообщение
ставят точку в конце. Зачем это делается?
%~dp0 путь к текущей папке выдаёт с завершающим слешем "\", в некоторых ОС такой формат для CD считается неверным

Добавлено через 3 минуты
Цитата Сообщение от V1RTuE Посмотреть сообщение
pushd/popd? Только вот читал о них и не совсем понял как правильно их использовать.
Windows Batch file
1
2
3
4
SetLocal EnableExtensions
pushd "\\server\papka"||echo.не получилось перейти к папке "\\server\papka"&pause&exit /b 1
:: здесь обработка файлов в папке "\\server\papka"
popd
Добавлено через 6 минут
при удачном pushd система назначает для папки "\\server\papka" следующую свободную "букву", с конца аглицкого алфавита: z: y: z: ...
поэтому нужно для каждого pushd popd, чтобы:
1) вернуться в каталог, который был до pushd
2) освободить "букву", занятую pushd

Windows Batch file
1
2
pushd /?
popd /?
расскажут об этом в академическом стиле
1
964 / 331 / 47
Регистрация: 30.01.2015
Сообщений: 1,440
27.02.2016, 02:47  [ТС] 3
Цитата Сообщение от b0gus Посмотреть сообщение
в некоторых ОС такой формат для CD считается неверным
а можете пример привести таких ОС?

Добавлено через 7 минут
В моем случае батник будет распологаться в сети (на сервере) и все прописанные в батнике команды будут выполняться на нем же (запускаться же батник будет с разных локальных машин, которые находятся в одной сети). Верным ли будет использование такой команды в начале батника?
Windows Batch file
1
pushd "%~dp0."
Чтобы в дальнейшем в нем не указывать полный путь. Повторюсь, все операции с папками и файлами будут выполняться всегда на сервере и возвращаться обратно (использовать popd) не требуется. Ну и соответственно к этому вопрос: если не используется команда popd, то надо в начале указывать SetLocal EnableExtensions?
Ну или может есть другой более верный способ? вместо pushd использовать что-то другое?
0
724 / 323 / 133
Регистрация: 17.03.2014
Сообщений: 811
27.02.2016, 03:10 4
Цитата Сообщение от V1RTuE Посмотреть сообщение
Верным ли будет использование такой команды в начале батника?
да

Цитата Сообщение от V1RTuE Посмотреть сообщение
надо в начале указывать SetLocal EnableExtensions?
не поленитесь, почитайте что выдаёт
Windows Batch file
1
pushd /?
:
Когда расширенная обработка команд включена, команда PUSHD допускает ввод сетевых путей в дополнение к обычным именам дисков и путям.
SetLocal EnableExtensions "включает" расширенную обработку

Добавлено через 1 минуту
Цитата Сообщение от V1RTuE Посмотреть сообщение
а можете пример привести таких ОС?
возможно, Win98
или WinPE, какой-нибудь версии

Добавлено через 2 минуты
Цитата Сообщение от V1RTuE Посмотреть сообщение
все операции с папками и файлами будут выполняться всегда на сервере и возвращаться обратно
как операции будут возвращаться обратно???
1
964 / 331 / 47
Регистрация: 30.01.2015
Сообщений: 1,440
27.02.2016, 03:15  [ТС] 5
Цитата Сообщение от b0gus Посмотреть сообщение
как операции будут возвращаться обратно???
видимо неправильно выразился. в смысле при работе батника никакие файлы локального компьютера не будут использоваться и сохраняться на нем)))
спасибо за разъяснения. ушел читать
Windows Batch file
1
pushd /?
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
28.02.2016, 22:23 6
Цитата Сообщение от b0gus Посмотреть сообщение
%~dp0 путь к текущей папке выдаёт с завершающим слешем "", в некоторых ОС такой формат для CD считается неверным
Где-то слышал об этом, но на практике не встречал.
Цитата Сообщение от V1RTuE Посмотреть сообщение
батник будет распологаться в сети (на сервере) и все прописанные в батнике команды будут выполняться на нем же (запускаться же батник будет с разных локальных машин, которые находятся в одной сети)
Не лишним будет перепроверить что выдает на сервере батник:
Windows Batch file
1
2
echo dp0 = %~dp0
echo cd = %cd%
если его запустить, используя локальную машину.

Скорее %~dp0 выдаст нечто вроде \\host\share
Так что подставлять эту конструкцию еще и в другие команды (кроме cd /d (chdir)), не стоит.
0
28.02.2016, 22:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2016, 22:23
Помогаю со студенческими работами здесь

Использование команды xlat
Доброе время суток! Есть задание: перевести в нижний регистр все буквы введеной строки. У меня...

Использование команды эгрэп
Здравствуйте!Подскажите пожалуйста: Если использовать строку system("egrep -i buf * "), выводятся...

Использование функций (команды) if
никак не могу на основании нижеприведённых кодов ввести в scilab функцию if. Пишет, что проблемы с...

Использование команды sort
задачка: вывести топ 10 процессов, хавающих больше всего cpu, формат выдачи столбцов следующий:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru