Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Отсечение пути.Как?Или получение относительного пути.

Ответить
Настройки темы
CMD/BAT - [решено] Отсечение пути.Как?Или получение относительного пути.

Старожил


Сообщения: 151
Благодарности: 4

Профиль | Отправить PM | Цитировать


Всем привет!
Вот мы имеем такой простой код который выводит полные пути ко всему что есть в папке
Код: Выделить весь код
@echo off
FOR /F "tokens=*" %%A IN ('dir /s /b /a-d "%~n1\*.*"') DO echo "%%A"
pause
или
Код: Выделить весь код
@echo off
set path_1=D:\test\a
FOR /F "tokens=*" %%A IN ('dir /s /b /a-d "%path_1%\*.*"') DO echo "%%A"
pause
Получаем результат
D:\test\a\test.exe
D:\test\a\abc.txt
D:\test\a\fold1\qwer.bat
D:\test\a\fold1\dir\start.7z
D:\test\a\test_dir\dell.dll

Но мне на выходе нужно получить
test.exe
abc.txt
fold1\qwer.bat
fold1\dir\start.7z
test_dir\dell.dll

как это реализовать?

Отправлено: 05:58, 21-02-2014

 

Аватара для EVGA

Новый участник


Сообщения: 13
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата nfs911:
@echo off
FOR /F "tokens=*" %%A IN ('dir /s /b /a-d "%~n1\*.*"') DO echo "%%A"
pause »
Эта команда начинает искать файлы по всему диску, а не в текущей папке.

Отправлено: 02:42, 08-05-2018 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата EVGA:
Эта команда начинает искать файлы по всему диску, а не в текущей папке. »
Про текущую папку речь и не велась. Поиск осуществляется в каталоге, имя которого берётся от первого аргумента пакетного файла. И вот тут-то, если аргумент не указан, ясен пень, %~n1\*.* превращается в \*.*, поскольку в коде тупо не проверяется ни существование каталога, ни наличие аргумента при вызове пакетного файла.

EVGA, Вы что хотели-то?

Отправлено: 05:23, 08-05-2018 | #12


Ветеран


Contributor


Сообщения: 2704
Благодарности: 1683

Профиль | Отправить PM | Цитировать


nfs911, Эта задача полностью аналогична задаче, решенной alpap
Код: Выделить весь код
@Echo Off
Cls
Set "D1=D:\CMD_Forum"
Set "Pref=%D1%\"
For /f "Delims=" %%a in ('2^>nul Dir /a-d /b /s "%D1%"') Do Set "nf=*%%a" &Call :Out "%%nf:*%Pref%=%%"
pause
GoTo :Eof
:Out
	Echo %1
exit /b

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 11:29, 19-05-2018 | #13



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Отсечение пути.Как?Или получение относительного пути.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Отказано в доступе к указанному устройству, пути или файлу. m4r47 Лечение систем от вредоносных программ 2 13-12-2012 13:14
Ошибка - Отказано в доступе к указанному устройству, пути или файлу. few ds Microsoft Windows 2000/XP 23 08-02-2012 14:59
Ошибка - отказано в доступе к указанному устройству пути или файлу. CoF_TuZ Лечение систем от вредоносных программ 8 16-01-2012 23:15
Доступ - Отказано в доступе к указанному устройству, пути или файлу. webb23 Microsoft Windows 7 1 22-10-2011 14:01
Доступ - Отказано в доступе к указанному устройству пути или файлу... Nautical Microsoft Windows 7 2 18-04-2010 11:57




 
Переход