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

[其他] 如何在cmd命令提示符下路径模式转换

怎么在两者之间转换呢?我是新手,找了好多帖子都没有找到,不知道是不是我没有找到,望知道的朋友回答一下。

TOP

认真研究了一下,楼上所说的是在短路径名和长路径名之间转换,学到了。不过我是想直接在提示符下一直显示短路径名方便操作,好像是不行的。

TOP

回复 3# xingyou


    能否说说主要是方便哪些操作?

TOP

回复 4# forfiles


    只是希望能在提示符下更快方便的得到短路径名,具体的操作现在倒是没有,比如在比较老的程序中只支持短路径名,虽然C语言可以处理长路径名,不过有些Api是必须使用到短路径名的,直接使用短路径名就方便多了。似乎我有点钻牛角尖了,只是好奇。

TOP

prompt 处的长路径转短路径可以用:
echo q|debug
或者
command /c exit
或者
mem>nul
诸如此类等等等等,似乎只要需要调用 ntvdm.exe 的 16位程序都会产生这种效果

怎么原封不动转回来就不晓得了,虽然可以改 %prompt% 强制使用长路径,但也就失去意义了...
不知道 cmd 把这个设置保存在哪里

TOP

回复 6# CrLf


    嗯,你讲的很不错,很好了,也只能更改当前目录,而且代码页是在英文状态的,就像是原版的dos了,就像进入了dosx.exe、graphics.com,只能使用短路径名了。这些都只能运行在32位系统里,这些东西都将会被抛弃吧。不过要得到短路径名还是很容易的,所以就不再煞费苦心cmd了。

TOP

回复 7# xingyou


    你用的哪个“很容易的”方法?

TOP

回复 8# forfiles


    1、可用提示符中的for命令的变量 %~fsi 来得到当前目录的短路径名。例如:
  1. for %i in (.) do echo %~fsi
复制代码
写一个批处理,把文件或目录拖动到批处理中显示结果:
  1. @echo off
  2. echo %~fs1
  3. pause
复制代码
或许有更好的方法。

    2、编写一个程序,用c、c++、c#等语言可以写一个程序用于路径转换,都通过API的 GetShortPathName 函数将长文件名转换为短文件名。不是很方便。

    3、就像之前所说的,在当前目录下输入16位程序,当前的长路径名就会变成短路径名了。不过在64位系统里是无效的。

TOP

返回列表