如何列出所有硬盘驱动器(非可移动驱动器)上的所有文件(包括系统文件和隐藏文件)?
我认为类似这样的:
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.BAT
4DOS 脚本,我将其更新为较新版本的 4DOS,然后移植到 4OS2 - 仍然可以工作,就像在 4DOS 上一样,在 Windows NT 6.1 上使用 JP Software 的 TCC/LE。
答案4
这可以有效地检查没有介质的可移动驱动程序! http://www.ericphelps.com/batch/samples/adrive.bat.txt. 这是一个未记录的功能!