Answers:
单击开始,然后cmd
在运行框中键入。启动cmd,并用于cd
进入您感兴趣的文件夹:
cd \
然后
dir /x
C:\>dir /x
13/10/2011 09:14 AM <DIR> DOCUME~1 Documents and Settings
13/10/2011 09:05 AM <DIR> PROGRA~1 Program Files
/s
开关执行子文件夹递归
在一些方便的目录中创建一个bat文件,然后可以从该路径复制并粘贴短路径。
您也可以只运行command.com
并继续cd
对当前目录执行命令。
在Windows批处理脚本中,%~s1
将路径参数扩展为short name。创建此批处理文件:
@ECHO OFF
echo %~s1
我打电话给我,shortNamePath.cmd
并这样称呼它:
C:\> shortNamePath "c:\Program Files (x86)\Android\android-sdk"
c:\PROGRA~2\Android\ANDROI~1
如果没有提供任何参数,这是使用当前目录的版本:
@ECHO OFF
if '%1'=='' (%0 .) else echo %~s1
调用时不带参数:
C:\Program Files (x86)\Android\android-sdk> shortNamePath
C:\PROGRA~2\Android\ANDROI~1
使用SET
和命名变量
Windows命令提示符具有一些约定,用于处理变量值中带有空格的约定,这些约定很难理解和理解,特别是如果您具有Unix背景。你可以做
SET TESTPATH=c:\Program Files (x86)\Android\android-sdk
(不带引号),或
SET "TESTPATH=c:\Program Files (x86)\Android\android-sdk"
(请注意引号的非直观放置);然后
CALL :testargs "%TESTPATH%"
︙
:testargs
echo %~s1
goto :eof
这是一个班轮:
cmd /c for %A in ("C:\Program Files") do @echo %~sA
细目:
cmd /c
-启动Windows命令解释器的新实例,执行字符串指定的命令,然后终止for %%parameter in (set) do
命令-有条件地多次执行命令。echo
-在屏幕上显示消息。@
符号与ECHO OFF
仅应用于当前行的符号相同。%~s
-扩展路径仅包含短名称。资料来源:
cmd /c
?如果在“命令提示符”窗口中,则只需键入for %A in ("C:\Program Files") do @echo %~sA
命令,然后在“运行”对话框中键入该命令,结果就会消失,然后才能读取。
cmd /c
运行时cmd
; 您确实需要从PowerShell中获取它,但随后还需要'...'
/c
cmd /c 'for %f in ("C:\Program Files") do @echo %~sf'
“短名称”实际上是旧的DOS 8.3命名约定,因此所有目录都是前6个字母,然后~1
假设只有一个名称与之匹配,例如:
C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\BCDEFG~1 - C:\BCDEFGHIJKL M Another Directory
这是唯一的例外
C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\ABCDEF~2 - C:\ABCDEFGHI Directory as well
Program Files
和Program Files (x86)
是PROGRA~1
和一个是PROGRA~2
。保罗的答案解决了这个问题。
...~4
)之后以类似哈希的开头,例如ABxxxx~1
x是十六进制的-很难读懂。
ABCDEFGH-CAT
,则将其简称ABCDEF~1
。如果再创建ABCDEFGH-DOG
,它将得到简称ABCDEF~2
。如果我再删除ABCDEFGH-CAT
,ABCDEFGH-DOG
仍然有短名ABCDEF~2
。仅通过查看长名称就无法分辨。
如果安装了Powershell,我发现一种非常方便的方法来解决当前目录(或其他任何内容)的短路径名。
只需在当前目录中打开powershell
在cmd Windows类型的Powershell中
如果您在gui中打开了文件夹,则可以直接在文件夹的地址栏中键入cmd.exe或powershell.exe。
然后发出命令
(New-Object -ComObject Scripting.FileSystemObject).GetFolder(".").ShortPath
信息来源:[ https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]
与Ivan Schwartz的答案类似,您可以将“ C:\ Program Files”替换%cd%
为以获取当前目录:
cmd /c for %A in ("%cd%") do @echo %~sA
另外,您也可以使用这个很棒的小工具PathCopyCopy
只需单击几下,您便可以从上下文菜单中获得几乎任何文件夹的长路径和短路径,例如:
右键单击目标文件夹=>路径副本=>短路径。
做完了 它将被复制到剪贴板。
我已经通过npm install
在样板上运行安装了节点模块。在尝试删除这些文件夹时,Windows不允许我们删除它们,因为路径太长而无法处理。
经过一些深入的研究后,我认为将自己的文件夹从根目录重命名为叶子目录是正确的,这样它也将引发任何违规异常。
这个对我有用。以下是C#项目的代码。
public static int directoryCounterIndex = 0;
public static void Main(string[] args)
{
string dirPath = @"D:\Studies\MeanStack\a\nodem";
RenameDirectories(dirPath);
}
private static void RenameDirectories(string dirPath)
{
directoryCounterIndex += 1;
var newPath = Path.GetDirectoryName(dirPath) + Path.DirectorySeparatorChar + directoryCounterIndex.ToString();
Directory.Move(dirPath, newPath);
var subDirectories = Directory.GetDirectories(newPath);
foreach (var subDirectory in subDirectories)
{
RenameDirectories(subDirectory);
}
}
C:\Users\abcd>subst z: "c:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"
C:\Users\abcd>subst
Z:\: => C:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"
这是我处理带空格的文件时最简单的方法,并且可以从文件资源管理器访问它,它也具有所有相同的访问权限。
只需将空格替换为
%20
这是事物“翻译”的方式,空格进入%20。
如果您确实需要大量,只需打开浏览器并输入类似
test ";($#< and find the word test, and see that the space is %20 and so on...
if exist C:\Program%20Files\ (echo exists)