积极答复者
批处理中进行复制文件时,如何跳过目录长度的限制

问题
-
如题:
VS中报错如下:
指定的路径或文件名太长,或者两者都太长。完全限定文件名必须少于 260 个字符,并且目录名必须少于 248 个字符。
路径如下大家可以试验下:
E:\业余研究项目\WZ_WF_YST_JieMi\WZ_WF_YST_JieMi\bin\Debug\自定义目录\文件夹\工作任务\霍家工业\霍氏工业Old\SourceCode\WZ.WOES.WebSolution\02.WebFunction\08.EnergyStatistic\01.WebForm\Content\Plugin.CSS\EnergyStatistic\BranchEnergyConsumptionStatistics\BranchEnergyConsumptionStatistics.css
在使用如下代码获取如上路径时,报的上述错误:
Path.GetDirectoryName(参数为上面的路径) 指定的路径或文件名太长,并且目录名必须少于 248 个字符求解,MSDN上各路大神,跳出来点化一下我等小民吧,拜谢!再拜!!三拜!!!
- 已更改类型 TheYangtzeTheYellowRiver 2019年5月22日 7:45
- 已更改类型 TheYangtzeTheYellowRiver 2019年5月22日 7:46
答案
-
https://docs.microsoft.com/zh-cn/windows/desktop/FileIO/naming-a-file
方案一:升级到Windows10 1607。
方案二:路径前面加"\\?\"。
方案三:
static string GetDirectoryName(string path) { for (var i = path.Length - 1; i != -1; --i) if (path[i] == '\\') return path.Substring(0, i); return null; }
- 已标记为答案 TheYangtzeTheYellowRiver 2019年5月22日 11:31
-
有一点问题,应该是这样。
static string GetDirectoryName(string path) { if (path != null) { for (var i = path.Length - 1; i != -1; --i) if (path[i] == '\\') return path.Substring(0, i); } return null; }
- 已标记为答案 TheYangtzeTheYellowRiver 2019年5月24日 0:20
全部回复
-
https://docs.microsoft.com/zh-cn/windows/desktop/FileIO/naming-a-file
方案一:升级到Windows10 1607。
方案二:路径前面加"\\?\"。
方案三:
static string GetDirectoryName(string path) { for (var i = path.Length - 1; i != -1; --i) if (path[i] == '\\') return path.Substring(0, i); return null; }
- 已标记为答案 TheYangtzeTheYellowRiver 2019年5月22日 11:31
-
https://docs.microsoft.com/zh-cn/windows/desktop/FileIO/naming-a-file
方案一:升级到Windows10 1607。
方案二:路径前面加"\\?\"。
方案三:
static string GetDirectoryName(string path) { for (var i = path.Length - 1; i != -1; --i) if (path[i] == '\\') return path.Substring(0, i); return null; }
-
有一点问题,应该是这样。
static string GetDirectoryName(string path) { if (path != null) { for (var i = path.Length - 1; i != -1; --i) if (path[i] == '\\') return path.Substring(0, i); } return null; }
- 已标记为答案 TheYangtzeTheYellowRiver 2019年5月24日 0:20