Как сделать выходное имя файла равным имени папки
-
23-08-2019 - |
Вопрос
Я создал пакетный файл для вывода содержимого папки в список имен.
@echo off
cd /d %1
Title %~f1
dir %1 /b /l > %1\..\file_list.txt
Как я могу сделать file_list.txt быть "Dir name" .txt?
Например, я нахожусь в папке ABC, и я хочу вывести список DIR, чтобы окончательный текстовый файл был назван ABC.TXT вместо file_list.txt
РЕДАКТИРОВАТЬ: Спасибо, Альконья, это работает отлично. Поскольку это информационный и учебный сайт, вы не могли бы вы расширить свой ответ, чтобы объяснить добавляемые вами параметры?
Решение
На основе обсуждения здесь, Я думаю, что это то, что вам нужно:
@echo off&setlocal enableextensions
Title %~f1
for %%* in (%1) do set MyDir=%%~n*
dir %1 /b /l > %1\..\"%MyDir%.txt"
endlocal&goto :eof
Дал ему быстрый тест и, кажется, делает то, что вы хотите
... предоставлено как есть/нет гарантий/и т. д. :)
Другие советы
Я не думаю, что есть простой способ получить только последнюю часть от текущего пути в простого сценария.
Но если у вас есть Сед На вашей машине это становится относительно легко:
@echo off
cd /d %1
Title %~f1
for /F "usebackq delims=" %%i in (`"pwd | sed -e ""{s/.*\\//g}"""`) do dir %1 /b /l > %1\..\%%i.txt
Исправление: Ответ Альконья правильно. Очевидно, с расширениями до партийных сценариев это возможно. (Теперь я тоже понимаю ~ f). Так что вам больше не нужно SED, и это сводится к:
@echo off
cd /d %1
Title %~f1
for /F "usebackq delims=" %%i in (`pwd`) do dir %1 /b /l > %1\..\%%~ni.txt
Возможно, поскольку вы измените каталог, вам не нужен %1 в пути выходного пути или команды DIR, и вы должны просто заменить %1 на путь, чтобы вы могли попробовать (непроверенно):
@echo off
cd /d %1
Title %~f1
dir /b /l > ..\%~n1.txt