Как запросить текущее имя каталога в переменную для пакетных файлов

Как запросить текущее имя каталога в переменную для пакетных файлов

Я исследовал и безуспешно пытался получить имя текущего каталога в переменной, например, %CurrDirNam%для создания текстового файла с тем же именем папки, что-то вроде третьего примера ниже, который работает, однако при запуске он перезаписывает существующий файл и его содержимое, поэтому я изменил нижнюю строку, чтобы проверить существование файла. Set DirName=%cd% For %%A in ("%dirname%") do ( Set Name=%%~nxA ) IF NOT EXIST %Name%.txt Echo %Dirname% > %DirName%\%Name%.txt Rem ---OOPS извините, я не знаю, как переформатировать код с CRLF и отступами. Я новичок в этом...

решение1

Если вы запустите это

Set DirName=%cd% 
Echo %Dirname% > %DirName%.txt

отC:\Temp, он будет расширяться до

Set DirName=C:\Temp 
Echo C:\Temp > C:\Temp.txt

Это не удастся, если у вас нет прав на запись на C:\, и это объяснитДоступ запрещенсообщение, которое вы получаете.

Если вы хотите создать файл в C:\Temp, используйте что-то вроде этого:

Set DirName=%cd% 
Echo %Dirname% > %DirName%\test.txt

Если имя файла должно совпадать с именем каталога, используйте этот трюк:

Set DirName=%cd%
For %%A in ("%dirname%") do (
    Set Name=%%~nxA
)
Echo %Dirname% > %DirName%\%Name%.txt

решение2

Я проверил это на своей системе Windows 10, и все работало без проблем.

>path.txt echo %cd%

Я запустил это в пакетном скрипте, находясь в каталоге, к которому мне нужен был путь. В моем случае мне нужен был только путь, чтобы создать из него URL. Я обнаружил, что при использовании >url.txt echo %cd:\=/%этого также учитываются все обратные косые черты, которые должны были быть прямыми косыми чертами в URL, и это избавило меня от проблем.

Остался последний шаг — небольшое редактирование файла url.txt.

Связанный контент