Board logo

标题: [其他] 如何在cmd命令提示符下路径模式转换 [打印本页]

作者: xingyou    时间: 2012-10-6 21:31     标题: 如何在cmd命令提示符下路径模式转换

怎么在两者之间转换呢?我是新手,找了好多帖子都没有找到,不知道是不是我没有找到,望知道的朋友回答一下。
作者: QIAOXINGXING    时间: 2012-10-6 22:15

http://bathome.net/viewthread.php?tid=1533
作者: xingyou    时间: 2012-10-6 22:32

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

回复 3# xingyou


    能否说说主要是方便哪些操作?
作者: xingyou    时间: 2012-10-6 23:03

回复 4# forfiles


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

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

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

回复 6# CrLf


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

回复 7# xingyou


    你用的哪个“很容易的”方法?
作者: xingyou    时间: 2012-10-8 14:17

回复 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位系统里是无效的。




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