#batch-file #dos
#пакетный файл #dos
Вопрос:
Я пытаюсь написать какой-нибудь пакетный скрипт dos для манипулирования некоторыми путями. Я не делал этого годами, поэтому я могу быть ржавым.
Путь является относительным и задается из командной строки в качестве аргумента
@echo off
set wpath=%1
@echo.%wpath%
set newpath=%wpath:~0,-4%
@echo.%newpath%
То, что я пытаюсь выполнить, — это избавиться от расширения
script.bat whatever/test.txt
whatever/test.txt
whatever/test
Но я получаю
script.bat whatever/test.txt
whatever/test.txt
<emptyline>
Я использую dosemu-1.4.0.1 / DOSBox-0.74 и это в качестве ссылки
Комментарии:
1. Это правильно — я только что дважды проверил свой CMD, и он работал, как ожидалось. Я могу только предположить, что dosemu неправильно эмулирует команды!
2. Хм, это то, чего я боялся. Любые другие способы, которыми я могу этого добиться?
3. Все, о чем я могу думать на данный момент, это (если у вас есть представление о том, какие файлы будут переданы), замените строку для всех возможных расширений… ie set path=%path:.txt =% …. задайте путь =%путь:.pdf=% … и т. Д. — Дайте мне знать, если найдете другой способ или поищите другой эмулятор!
Ответ №1:
Вы могли бы проверить пределы dosemu, может ли он справиться
echo %path:~0,4%
(только положительные результаты), чем вам нужно только получить длину строки
, или вы можете попробовать
for %%A in ("%path%") do echo %%~dpnA
Комментарии:
1. первый возвращает <пустую строку>, второй — %dpnA
2. Вы тестируете второй в командной строке (только один процент) или в пакете (требуется двойной процент)
3.
C:>for %A in ("%path%") do echo %~dpnA
C:>echo %~dpnA
%~dpnA
C:>
Ответ №2:
По-видимому, это расширения wimcmd, и их нельзя найти в DOS, если кто-нибудь все еще доберется сюда 🙂