як перелічити всі файли та каталоги в даному каталозі з повним шляхом, але не рекурсивним?


14

Якось як dir /bкоманда, але мені потрібні також приховані та системні файли. Вбудована команда dir не дозволяє перераховувати такі «приховані» файли з рештою, і я повинен використовувати /sповний шлях туди, що, звичайно, не є рекурсивним.

Я також грав з версією lsкоманди Windows, і там також не пощастило. Для відображення повного шляху ви повинні додати зірочку ( mydir\*) в кінці каталогу, який ви перераховуєте, але це робить його рекурсивним.


1
Я можу вирішити частину вашої проблеми: / а прапор робить dir включати приховані та системні файли.
Гаррі Джонстон

Відповіді:


9

Якщо ви нічого не хочете встановлювати, ви також можете скористатися такою командою:

for /f "delims=" %a in ('cd') do @for /f %b in ('dir /b /a') do @echo %a\%b

Ви повинні спочатку cdувійти до каталогу, інакше він не працюватиме.


2
або це! for / f "delims ="% b in ('dir / b / a') do @echo% cd% \% b Але ваш цікавий прийом, досить загальний
барлоп

Ви можете пояснити, будь ласка, як працює ця команда?
rubo77

18

Спробуйте виконати таку команду:

dir /s /b /a

Це дасть ВСІ файли, ви можете запустити його, FINDякщо хочете, або додати ім'я папки.


1

Якщо ви спробували ls, чому б не просто встановити cygwin? Ви можете використовувати find у cygwin:

find -name "*"

Якщо ви встановите cygwin і хочете використовувати find в cygwin, переконайтеся, що знахідка в cygwin викликається або використовуючи повний шлях, або вставляйте шлях до cygwin перед системою32, оскільки Windows також має файл find.exe.


Я перевірив unixutils, знаходжу рекурсивно :(
rsk82

2
@ rsk82: З -maxdepth 1, це не так.
Денніс

0

ви можете завантажити sed з gnuwin32. Це попереджає поточний каталог.

Виконання% cd% не працює .. тому %cd:\=\\%перетворює кожен \на \\, що призводить до \.

C:\WINDOWS>dir /b | sed "s/^/%cd:\=\\%\\/" 
C:\WINDOWS\0.log
C:\WINDOWS\003109_.tmp
C:\WINDOWS\addins

0

Це давнє запитання, але я думав, що хоч щось додам.

DIR не правильно перебирає всі дерева каталогів, які ви хочете, зокрема не ті, які є на C :. Він просто здається місцями через різний захист.

ATTRIB працює набагато краще, тому що знаходить більше. (Чому така різниця? Чому МС зробить одну службову роботу в одну сторону, а іншу роботу в цьому відношенні? Проклята, якщо я знаю.) На мій досвід, найефективнішим способом вирішити це питання, хоча це хитрість, - отримати два списки:

attrib /s /d C:\ >%TEMP%\C-with-directories.txt

attrib /s C:\ >%TEMP%\C-without-directories.txt

і отримайте різницю між ними. Ця різниця є в каталогах на C: (за винятком надто добре прихованих). Для C:, я зазвичай роблю це як адміністратор.


0

Мені хотілося попрацювати з переліком каталогів, тому я гугл "Друк каталогу". Я знайшов вказівки зробити це, але вони включили зміни до Реєстру. Не бажаючи з цим хитритися і бажаючи використовувати список, а не друкувати його, я знайшов спосіб досягти своїх цілей, не змінюючи Реєстр. Я створив дві пакетні файлові програми для збереження в каталозі утиліт. Потім, коли я хотів надрукувати або працювати з каталогом, я просто копіюю відповідний пакетний файл у тематичний каталог, а потім виконую його! Ось вони:

rem PrintThisDirectory.bat
rem Prints the directory where it resides
@echo off
dir %1/-p/o:gn> "%temp%\listing"
start /w notepad "%temp%\listing"

Rem ShowThisDirectory.bat
Rem Displays in Notepad the Directory where it resides
@echo off
dir %1/o:gn> "%temp%\listing"
start /w notepad "%temp%\listing"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.