Как сделать имя выходного файла равным имени папки - PullRequest
3 голосов
/ 03 апреля 2009

Я создал командный файл для вывода содержимого папки в список имен.

@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

Edit: Спасибо Alconja, это работает отлично. Так как это информационный и обучающий сайт, не могли бы вы расширить свой ответ, чтобы объяснить параметры, которые вы добавляете?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2009

Основываясь на обсуждении здесь , я думаю, что вы ищете:

@echo off&setlocal enableextensions
Title %~f1
for %%* in (%1) do set MyDir=%%~n*
dir %1 /b /l > %1\..\"%MyDir%.txt"
endlocal&goto :eof

Провел быструю проверку и, кажется, делает то, что ты хочешь

... предоставляется как есть / без гарантий / и т.д.:)

1 голос
/ 03 апреля 2009

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

Но, если на вашем компьютере установлено sed , это становится относительно просто:

@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

Исправление: Ответ Alconja правильный. Очевидно, что с расширениями для пакетного скриптинга это возможно. (Теперь я тоже понимаю ~ 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
...