Board logo

标题: [文本处理] 有没有把带空格长文件名路径转换为win可识别短路径的工具? [打印本页]

作者: ednykissyou    时间: 2024-6-18 15:01     标题: 有没有把带空格长文件名路径转换为win可识别短路径的工具?

本帖最后由 ednykissyou 于 2024-6-18 15:08 编辑

比如我想把这种C:\Program Files\Adobe\Adobe InDesign 2024\Resources\CEP\CEPHtmlEngine
转换为短路径

我这个file://C:\Progra~1\Adobe\Adobe~2\Resources\CEP\CEPHtmlEngine
为何不对呢,Adobe这个目录下就有三个长文件夹:
Adobe Creative Cloud Experience
Adobe InDesign 2024
Adobe Media Encoder CS6
作者: ShowCode    时间: 2024-6-18 15:20

回复 1# ednykissyou
  1. @echo off
  2. cd /d "C:\Program Files\Adobe\Adobe InDesign 2024\Resources\CEP\CEPHtmlEngine"
  3. echo 当前路径 %cd%
  4. cd /d "C:\"
  5. echo 当前路径 %cd%
  6. cd /d "C:\PROGRA~1\Adobe\ADOBEI~1\RESOUR~1\CEP\CEPHTM~1"
  7. echo 当前路径 %cd%
  8. pause
复制代码

作者: ppll2030    时间: 2024-6-18 17:35

C:\Progra~1\Adobe\AdobeI~1\Resour~1\CEP\CEPHtm~1

短路径是截取前六个字符,有空格占用的要忽略,如Adobe InDesign 2024表示为AdobeI~1
作者: ednykissyou    时间: 2024-6-18 18:21

谢谢二位前辈。
我又长进了一点。
作者: ednykissyou    时间: 2024-6-21 18:14

回复 2# ShowCode

没看懂你这个咋用,批处放在当前路径能获取到短路径?
作者: ednykissyou    时间: 2024-6-21 18:15

回复 3# ppll2030

C:\Users\dub\AppData\Roaming\Adobe\InDesign\Version 19.0-J

上边这个我写成这样又为何不对了
file://C:\Users\dub\AppData\Roaming\Adobe\InDesign\Versio~1
作者: czjt1234    时间: 2024-6-21 21:09

  1. file:///D:/Program Files (x86)/Tencent/WeChat Files/wxid_93hw03hhoq4a22/index.htm
复制代码
我在 IE浏览器 QQ浏览器 google浏览器 的地址栏输入这个地址均能打开指定的网页
你到底是什么环境需要短名称
作者: czjt1234    时间: 2024-6-21 21:12

实在不行你可以逐个查看
比如
  1. @echo off
  2. cd /d c:\
  3. dir /x
复制代码
可以看到各长文件名对应的短文件名
作者: ppll2030    时间: 2024-6-21 23:21

回复 6# ednykissyou


    file://C:\Users\dub\AppData\Roaming\Adobe\InDesign\Versio~1.0-J

有问题,可以用cmd下,用dir /x来检查一下系统的正确短路径
作者: ShowCode    时间: 2024-6-22 09:03

回复 6# ednykissyou


    VERSIO~1.0-J
作者: buyiyang    时间: 2024-6-22 12:46

获取文件或文件夹的短路径
  1. @echo off
  2. set strPath='C:\Users\dub\AppData\Roaming\Adobe\InDesign\Version 19.0-J'
  3. powershell -c "$path=%strPath%;$a=New-Object -ComObject Scripting.FileSystemObject;if(Test-Path $path){if($a.FileExists($path)){$f=$a.GetFile($path)}else{$f=$a.GetFolder($path)};Write-Host $f.ShortPath}else{Write-Host '路径不存在'}"
  4. pause
复制代码
  1. '&cls&cscript -nologo -e:vbscript "%~f0" "C:\Users\dub\AppData\Roaming\Adobe\InDesign\Version 19.0-J"&pause&exit
  2. strPath = WScript.Arguments(0)
  3. Set objFSO = CreateObject("Scripting.FileSystemObject")
  4. If objFSO.FileExists(strPath) Then
  5.     Set f = objFSO.GetFile(strPath)
  6.     WScript.Echo f.ShortPath
  7. ElseIf objFSO.FolderExists(strPath) Then
  8.     Set f = objFSO.GetFolder(strPath)
  9.     WScript.Echo f.ShortPath
  10. Else
  11.     WScript.Echo strPath & " 路径不存在"
  12. End If
复制代码

作者: hnfeng    时间: 2024-6-23 08:45

for /?  里面:
%~sI        - 扩展的路径只含有短名
作者: ShowCode    时间: 2024-6-23 09:39

回复 5# ednykissyou


放在当前路径.bat
  1. @echo off
  2. for %%i in ("%~dp0") do (
  3.     set "ShortName=%%~si"
  4. )
  5. echo,%ShortName%
  6. pause
复制代码

作者: aloha20200628    时间: 2024-6-23 10:27

本帖最后由 aloha20200628 于 2024-6-23 10:28 编辑


系统内置命令 fsutil 可用于管控 dos8.3 命名操作,见如下命令行的当前系统状态查询
其中状态值2,3似乎等效,即只允许系统盘(如c:)8.3命名有效,改变状态值0/1的结果须重建文件目录结构之后方可生效...详细用法可网搜自查
老东家自报8.3命名管理已是dos远古遗产存在诸多纰漏且若与windows_x32/x64位系统命名管理并存会折损文件系统效率...仅在不得已时用之

C:\temp>fsutil 8dot3name

---- 支持的 8DOT3NAME 命令 ----
query   在系统上查询当前设置的短名称行为
scan    扫描受影响的注册表条目
set     更改控制系统上短名称行为的设置
strip   删除目录中所有文件的短名称

C:\temp>fsutil 8dot3name query
注册表状态为: 2 (按卷设置 - 默认值)。

C:\temp>fsutil 8dot3name query
注册表状态为: 1 (禁用所有卷上的 8dot3 名称创建)。

C:\temp>fsutil 8dot3name query
注册表状态为: 0 (启用所有卷上的 8dot3 名称创建)。

C:\temp>fsutil 8dot3name query
注册表状态为: 3 (在所有非系统卷上禁用 8dot3 名称创建)。

作者: ednykissyou    时间: 5 天前 21:07

回复 11# buyiyang

编译器错误,无效字符
作者: ednykissyou    时间: 5 天前 21:09

回复 13# ShowCode


没有什么用啊?
也没生成个记事本,也没个提示的
作者: ednykissyou    时间: 5 天前 21:20

又发梦冲了,前两天我试Versio~1.0-J是可行的。
今天我试
C:\Users\dublove\AppData\Roaming\Adobe\InDesign\Version 19.0-J\zh_CN\Workspaces
file://C:\Users\dublove\AppData\Roaming\Adobe\InDesign\Versio~1.0-J
竟然又打不开了
下边这一步都可以打开的
file://C:\Users\dublove\AppData\Roaming\Adobe\InDesign\
作者: ednykissyou    时间: 5 天前 21:21

回复 13# ShowCode
无反应,没动静啊
作者: ShowCode    时间: 5 天前 22:07

回复 18# ednykissyou


    收到,祝好运。
作者: Batcher    时间: 5 天前 22:20

回复 18# ednykissyou


建议以后不要再说“不行”、“一闪而过”、“没有反应”之类的话,因为这对于想要给你进一步帮助的人来说没有任何意义。
希望大家都能学会的一个知识点是:如何查看代码的报错信息。

请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
作者: Five66    时间: 4 天前 23:53

有啥意义?短文件中的名字又不是固定的




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