如何使用 MS-DOS 批处理输出列出所有硬盘上的所有文件?

如何使用 MS-DOS 批处理输出列出所有硬盘上的所有文件?

如何列出所有硬盘驱动器(非可移动驱动器)上的所有文件(包括系统文件和隐藏文件)?

我认为类似这样的:

dir -a -h *.* /s > file.txt

但这是针对我所在的特定驱动器。

我该如何做类似的事情,但对于 C:、D: 等,我不知道驱动程序的 DOS 名称,我需要一个 .bat 来执行此操作(自动列表)。实施者也无法知道驱动程序的名称。

答案1

有一个可以检测 CD 驱动器的程序(FINDCD.EXE) 包含在一些启动盘(包括 Windows 98 紧急启动盘)中,您可以在批处理文件中使用这些启动盘来跳过它们:

@echo off
findcd.exe
if (%1)==() goto start

:dirit
if not exist %1:\*.* goto done
if (%1)==(%CDROM%) goto done
dir /a/s/o %1:\*.* >> c:\Files.txt
goto done

:start
for %i in (c d e f g h i j k l m n o p q r s t u v w x y z) do call %0 %i
goto done

:done

我只是随口说说而已(因为我现在使用的是 Windows,所以没有测试),但基本上应该能解决问题。请注意,软盘驱动器总是分配了以 A 开头的驱动器号,而硬盘总是从 C 开始,因此跳过 A 和 B。

还有一个可以检测 RAM 驱动器的程序(FINDRAMD.EXE) 您可以使用它来检测并跳过 RAM 驱动器(如果有),但这需要更多工作(以及单独的批处理文件)。请查看SETRAMD.BAT通常包含的示例。

答案2

如果您仅使用 DOS,那么可以使用以下方法来检测所连接的驱动器的类型:

http://www.dostips.com/DtCodeSnippets.php#Snippets.DrivesAndTypes

这在 Windows 7 命令提示符下不起作用,所以我无法进一步扩展它,但添加循环来测试固定磁盘并执行目录应该不会太难。

答案3

你是非常幸运的是。我的一台机器上还有我的旧DS.BTM脚本(多年前我得到的一个精简版和现代化版本SYSINF.BAT),这是其中的摘录。这需要 JP Software 的 4DOS,它现在是免费软件。如您所见,它从 DOS 中获取值LASTDISK,并明确避免使用可移动驱动器和网络驱动器。

@echo 关闭
加载按钮
将 d = %@ascii[A] 执行到 %@ascii[%_lastdisk]

   当且仅当 %@ready[%@char[%d]:] EQ 1 则

       当且仅当 %@removable[%@char[%d]:] NE 1 .AND. %@remote[%@char[%d]:] NE 1 则

           dir /s /a: %@char[%d]:\

       结束语

   结束语

恩多

那些在其他答案中将 DOS 误认为 Windows 的人会很高兴地知道,这个 4DOS 脚本 - 取自一个有二十年历史的SYSINF.BAT4DOS 脚本,我将其更新为较新版本的 4DOS,然后移植到 4OS2 - 仍然可以工作,就像在 4DOS 上一样,在 Windows NT 6.1 上使用 JP Software 的 TCC/LE。

答案4

这可以有效地检查没有介质的可移动驱动程序! http://www.ericphelps.com/batch/samples/adrive.bat.txt. 这是一个未记录的功能!

相关内容