在DOS窗口中,如何获取我所在目录的完整DOS名称/短名称?
例如,如果我在目录中C:\Program Files\Java\jdk1.6.0_22,我想显示它的短名称C:\PROGRA~1\Java\JDK16~1.0_2.
我知道运行dir /x会给我当前目录中的文件/目录的短名称,但我无法找到以短名称格式显示当前目录的完整路径的方法.我必须按照从根目录开始的路径,逐个目录,dir /x在每个路径中运行.
我确定有更简单的方法吗?
我创建了一个应用程序,下载SP站点中的所有文档库,但有一次它给了我这个错误(我试着看谷歌但无法找到任何东西,现在如果有人知道解决这个问题的任何技巧,请回复否则谢谢看着它)
System.IO.PathTooLongException:指定的路径,文件名或两者都太长.完全限定的文件名必须少于260个字符,目录名必须少于248个字符.在System.IO.Path.NormalizePathFast(字符串路径,布尔fullCheck)在System.IO.Path.GetFullPathInternal(字符串路径)在System.IO.FileStream.Init(字符串路径,的FileMode模式,FileAccess的访问,权限的Int32,布尔useRights ,文件共享份额,缓冲区大小的Int32,FileOptions选项,SECURITY_ATTRIBUTES secAttrs,字符串MSGPATH,布尔bFromProxy)在System.IO.FileStream..ctor(在系统字符串路径,的FileMode模式,FileAccess的访问,文件共享份额,缓冲区大小的Int32,FileOptions选项). IO.File.Create(String path)
它达到字符串的限制,代码如下,
#region Downloading Schemes
private void btnDownload_Click(object sender, EventArgs e)
{
TreeNode currentNode = tvWebs.SelectedNode;
SPObjectData objectData = (SPObjectData)currentNode.Tag;
try
{
CreateLoggingFile();
using (SPWeb TopLevelWeb = objectData.Web)
{
if(TopLevelWeb != null)
dwnEachWeb(TopLevelWeb, TopLevelWeb.Title, tbDirectory.Text);
}
}
catch (Exception ex)
{
Trace.WriteLine(string.Format("Exception caught when tried to pass TopLevelWeb:{1}, Title = {2}, object data to (dwnEachWeb_method), Exception: {0}", ex.ToString(), objectData.Web, objectData.Title));
}
finally
{
CloseLoggingFile();
}
}
private void dwnEachWeb(SPWeb TopLevelWeb, string FolderName, string CurrentDirectory)
{ …Run Code Online (Sandbox Code Playgroud) 我需要使用Java(tm)确定存储在Windows系统上的文件的短文件名.
我正在尝试在Windows XP中编写一个批处理文件,它接受一个完全限定的路径名并输出8.3短名称版本...
@echo off
echo "%~s1"
Run Code Online (Sandbox Code Playgroud)
我遇到过一个特殊情况,它输出的路径和文件不正确......
C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62[1].ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62_1_~1.JA2M34V\62[1].ja2"
Run Code Online (Sandbox Code Playgroud)
请注意,上述输出("C:\ DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62_1_~1.JA2M34V\62 [1] .ja2")不存在.但是,如果从该输出中删除".JA2M34V\62 [1]"部分,则生成的字符串将是原始输入文件的有效路径.
这似乎是在文件名中使用括号([])的问题.如果我在同一目录中创建文件62.ja2,输出将是正确的...
C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62.ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62.ja2"
Run Code Online (Sandbox Code Playgroud)
这是Windows中的错误吗?有没有人知道是否有一个解决方法允许批处理文件正确处理此文件名?
当我在参数中添加双引号时,为什么下面的psexec执行命令失败?

.bat文件的内容如下:
set FILEPATH=%~1
set BAT_ARCHIVE_IDENTIFIER=%~2
set DEPLOYMENT_ROOT=%~3
echo %FILEPATH% %BAT_ARCHIVE_IDENTIFIER% %DEPLOYMENT_ROOT%
Run Code Online (Sandbox Code Playgroud) command-line batch-file command-prompt psexec command-line-arguments
windows ×3
batch-file ×2
command-line ×2
.net ×1
c# ×1
file ×1
filenames ×1
java ×1
parameters ×1
psexec ×1
sharepoint ×1
short ×1
string ×1