Board logo

标题: [文件操作] 批处理如何区分当前文件是在硬盘打开、光盘打开、U盘打开?谢谢! [打印本页]

作者: Shuye    时间: 2023-4-3 13:23     标题: 批处理如何区分当前文件是在硬盘打开、光盘打开、U盘打开?谢谢!


在不同的介质里打开文件有没有什么不同的标记?

谢谢!

作者: jyswjjgdwtdtj    时间: 2023-4-3 13:38

介质是啥意思?
作者: Shuye    时间: 2023-4-3 13:51

回复 2# jyswjjgdwtdtj

指存储介质,硬盘、光盘、U盘的存储介质不同。

作者: jyswjjgdwtdtj    时间: 2023-4-3 16:12

这能有啥区别?都是软件读取文件的内容,“解释”出图片、视频、批处理………………
作者: jyswjjgdwtdtj    时间: 2023-4-3 16:15

硬是要说出点不同 就是文件们一个在C、D盘,一个在E、F、G、H、I、J、K盘
作者: czjt1234    时间: 2023-4-3 18:07

wmic path Win32_LogicalDisk get DriveType

未知 (0)
无根目录 (1)
可移动磁盘 (2)
本地磁盘 (3)
网络驱动器 (4)
光盘 (5)
RAM 磁盘 (6)
作者: Shuye    时间: 2023-4-3 18:11

回复 5# jyswjjgdwtdtj

如何区分是“硬盘”,还是“光盘”、“U盘”呢?

作者: Shuye    时间: 2023-4-3 18:18

回复 6# czjt1234

谢谢 czjt1234 兄!

比如,现在是在“光盘”打开,DriveType 值是 “5”。

怎样才能得到 x=5  ?

作者: terse    时间: 2023-4-3 19:47

如果WMIC可用的话可以满足你的要求
作者: yakeyun    时间: 2023-4-3 22:35

本帖最后由 yakeyun 于 2023-4-3 22:38 编辑

回复 8# Shuye


wmic path Win32_LogicalDisk get Caption,Description,DriveType

做关联盘符就可以取到对象了,比如抓取进程名文件路径,通过获取盘符,然后和后面的介质类型做匹配。
例如已知运行进程名为“test.exe”获取到的路径盘符是E:\,其运行介质为本地磁盘。


作者: Shuye    时间: 2023-4-4 00:50

回复 10# yakeyun

谢谢 yakeyun 兄!

不过,好像还不太明白。

作者: terse    时间: 2023-4-4 06:10

  1. @echo off
  2. set p=c:
  3. for /f "tokens=*" %%i in ('wmic logicaldisk where "name='%p%'" get DriveType^,Description^,name  /value') do (
  4.      for /f "tokens=*" %%j in ("%%i") do set %%j
  5. )
  6. echo %name%  %Description%
  7. pause
复制代码

作者: Shuye    时间: 2023-4-4 14:14

回复 12# terse

谢谢 terse 兄!

不过,在U盘上执行,结果还是:C:  Local Fixed Disk

作者: yakeyun    时间: 2023-4-4 14:33

回复 11# Shuye


1.打开的文件是批处理还是EXE文件?
2.如果是EXE文件,运行后的进程名称是什么?
作者: Shuye    时间: 2023-4-4 14:55

回复 14# yakeyun

想在批处理的开头作个判断。

作者: buyiyang    时间: 2023-4-4 15:33

  1. for /f "skip=1 tokens=2" %%i in ('wmic logicaldisk where "name='%~d0'" get Caption^,Name^,Description') do set "Description=%%i"
  2. echo,%Description%
复制代码

作者: buyiyang    时间: 2023-4-4 15:38

  1. for /f "tokens=2" %%i in ('wmic logicaldisk where "name='%~d0'" get Caption^,Description^,Name') do set "Description=%%i"
  2. echo,%Description%
复制代码
去掉skip也可以
作者: Shuye    时间: 2023-4-4 15:52

回复 17# buyiyang

测试成功,谢谢 buyiyang 兄!

作者: terse    时间: 2023-4-4 17:48

回复 13# Shuye

set p=c:
这里只是给个例子 具体要你自己根据环境定义的
作者: Shuye    时间: 2023-4-4 18:37

回复 19# terse

谢谢 terse 兄!





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2