[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 请教下没有短名称的畸形文件中的文件是怎样被执行的

本帖最后由 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:20 编辑

看你的%tmp%路径是否有空格。

TOP

回复 2# buyiyang
dir d:\ /x压根不显示 %tmp%下文件短名称  短名称是空白的

TOP

回复 3# smss

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

TOP

回复 2# buyiyang 没有空格

TOP

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

TOP

回复 6# buyiyang

我这是diskgenius格式化的NTFS, Windows 11 Insider Preview 10.0.22635.3646 (ni_release) amd64系统

TOP

win7以上不是能直接访问???

TOP

回复 8# Five66
畸形目录 带两个点 资源管理器就定位不到

TOP

回复 9# smss


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

TOP

本帖最后由 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 上测试

TOP

回复 11# smss


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

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

TOP

返回列表