Board logo

标题: [文件操作] 请教下没有短名称的畸形文件中的文件是怎样被执行的 [打印本页]

作者: smss    时间: 2024-5-31 11:28     标题: 请教下没有短名称的畸形文件中的文件是怎样被执行的

本帖最后由 smss 于 2024-6-3 06:42 编辑

把D:换为%tmp%便得不到短名称了 真是奇怪
  1. @Echo off
  2. set a=smss..
  3. if not exist D:\%a%\ md D:\%a%\
  4. for /f "tokens=4 delims= " %%a in ('dir d:\ /x ^|findstr /i /c:"%a%"')do set b=%%a
  5. if not exist "D:\%b%\Notepad2.exe" copy "C:\Program Files\Notepad2\Notepad2.exe" "D:\%b%\"
  6. start "" "D:\%b%\Notepad2.exe"
  7. pause
复制代码
  1. @Echo off
  2. for /r %%i in (Notepad2.exe)do Echo %%i
  3. pause
复制代码
今天我换个思路发现更加不好了 每个文件夹下都查到Notepad2.exe 但打开都没有 难道是系统BUG
作者: buyiyang    时间: 2024-5-31 12:18

本帖最后由 buyiyang 于 2024-5-31 12:20 编辑

看你的%tmp%路径是否有空格。
作者: smss    时间: 2024-5-31 12:37

回复 2# buyiyang
dir d:\ /x压根不显示 %tmp%下文件短名称  短名称是空白的
作者: aloha20200628    时间: 2024-5-31 13:14

回复 3# smss

一楼代码第4行中
   dir d:\ /x ^|findstr /i /c:"%a%"
改为
   dir d:\ /x ^|findstr /i /c:"%a:~0,-2%"
变量b即可获取实值了...

作者: smss    时间: 2024-6-1 07:37

回复 2# buyiyang 没有空格
作者: buyiyang    时间: 2024-6-1 10:22

for 的问题看namejm的教程:for /r 的作用及用法
dir /x 的问题可能是文件系统导致,77七测试:
http://www.bathome.net/redirect.php?goto=findpost&pid=281313&ptid=69140
作者: smss    时间: 2024-6-1 10:58

回复 6# buyiyang

我这是diskgenius格式化的NTFS, Windows 11 Insider Preview 10.0.22635.3646 (ni_release) amd64系统
作者: Five66    时间: 2024-6-1 17:21

win7以上不是能直接访问???
作者: smss    时间: 2024-6-1 18:47

回复 8# Five66
畸形目录 带两个点 资源管理器就定位不到
作者: Five66    时间: 2024-6-1 19:32

回复 9# smss


        win7能直接双击打开,也能资源管理器地址栏输入地址打开,cmd也能直接访问

作者: smss    时间: 2024-6-1 19:56

本帖最后由 smss 于 2024-6-1 20:04 编辑

回复 10# Five66 已经多年不用win7 win11是打不开的 用命令执行也要短名称

start "" "d:\smss..\" 打不开
start "" "d:\smss~1\" 打不开
start "" "d:\smss~1\Notepad2.exe"可以
用同样方式在 %tmp%下生成
start "" "%tmp%\smss~1\Notepad2.exe"打不开
但可以复制 删除 真是奇怪

以上情况是在Win11 10.0.22635.3646 上测试
作者: Five66    时间: 2024-6-2 00:24

回复 11# smss


start "" "d:\smss~1\" 打不开
应该能换成
explorer "d:\smss~1\"

start "" "%tmp%\smss~1\Notepad2.exe"打不开
或许是程序的本身不能在%tmp%目录下运行,试试换成其他程序或%tmp%下的正常路径看看




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