许多Windows应用程序(例如,几乎所有.NET应用程序)都无法打开长度超过260个字符的路径。我正在批量重命名播客文件列表。我想用剧集的标题命名每个文件,但标题最多100个字符。这意味着如果用户将文件保存在路径很长的深层目录中,他们可能会达到限制并且无法在其他应用程序中打开该文件。我的程序可以接受这么长的文件名,然后留给用户处理很长的路径吗?iTunes裁剪为40个字符,但这似乎非常保守。感谢BenVoigt澄清这仅适用于某些应用。 最佳答案 Windows对文件路径没有255个字符的限制。CreateFileA有260个字符的
我有以下代码useutf8;open($file,'>:encoding(UTF-8)',"さっちゃん.txt")ordie$!;print$file"さっちゃん";但我得到的文件名为ã•ã£ã¡ã‚ƒã‚“.txt我想知道是否有一种方法可以像我期望的那样(意味着我有一个unicode文件名),而无需求助于Win32::API、Win32API::*或移动到另一个平台并使用Samba共享以修改文件。目的是确保我们没有任何需要加载的Win32特定模块(即使是有条件的)。 最佳答案 Perl将文件名视为不透明的字节串。它们需要根据您的“
在gVim中,如果光标位于包含空格的文件名(如"C:\ProgramFiles\Vim\vim71\README.txt")上,则使用'gf'失败。我找到了isfname选项,但文档说应该避免使用空格。在这种情况下,我可以让gVim打开文件吗? 最佳答案 您可以在可视模式下选择文本,然后对其执行gf,这在一定程度上解决了问题。 关于windows-Vim在文件名中使用带空格的gf,我们在StackOverflow上找到一个类似的问题: https://stac
在Java中,我将一个可执行文件提取到使用File.createTempFile()指定的位置。当我尝试运行我的可执行文件时,我的程序在尝试读取第一行输出时挂起。我发现,如果我尝试运行从另一个程序中提取的相同可执行文件,如果我将目录指定为C:\DocumentsandSettings\username\LocalSettings\Temp\prog.exe,它就会工作。但是,如果我将目录指定为C:\DOCUME~1\USERNA~1\LOCALS~1\Temp\prog.exe,我就会挂起。有没有办法取消我程序中的波浪线文件名,以便我可以指定一个可用的目录名?(因为我总是喜欢解决语言和
我在目录中有许多SQL脚本,以数字为前缀,例如目前,我可以使用此脚本循环遍历它们:@ECHOOFFFOR/r.%%FIN(*.sql)DO(ECHOFile:"%%F")但是,由于Windows读取目录中文件的方式,10和11在2之前读取,依此类推:如何按前缀顺序遍历目录中的每个文件? 最佳答案 下面的批处理文件在需要它的文件名中插入前导零。@echooffsetlocalEnableDelayedExpansionfor/F"delims="%%fin('dir/B*.sql')do(set"filename=%%f"if"!fi
我正在寻找一个字符来使用文件名定界符(我将多个文件名存储在一个纯文本字符串中)。Windows似乎不允许:,?,*,,>,",|,/和\在文件名中。显然,\和/不能使用,因为它们表示路径内的内容。有什么理由不应该使用其他任何人吗?我只是在想,类似于/或\,那些其他不允许的字符可能具有特殊含义,我不应该假设它们不会出现在路径名中。在其他7个字符中,用于此目的的任何字符是绝对安全的还是绝对不安全的? 最佳答案 字符:和"也用于路径。冒号是驱动单元分隔符,当空格是文件夹或文件名的一部分时使用引号。字符*和?在搜索文件时用作通配符。字符和>
在.NET中是否有任何标准化/库化/测试的方法来获取任意字符串并以表示有效文件名的方式对其进行处理?滚动我自己的char-replace函数很容易,但我想要一些更健壮和resued的东西。 最佳答案 您可以使用Path.GetInvalidFileNameChars检查字符串中的哪些字符无效,并将它们转换为有效的字符,例如连字符,或者(如果您需要双向转换)将它们替换为转义标记,例如%,然后他们的unicode代码的十六进制表示(我实际上使用过一次这种技术,但现在手头没有代码)。编辑:以防万一有人感兴趣,这里是代码。//////Esc
这个问题在这里已经有了答案:Win32FileNameComparison(4个答案)关闭6年前。在Windows上,文件比较是不区分大小写的操作。然而,一个真正不区分大小写的系统将对语言环境设置敏感,并且必须处理三种情况,而不是两种(至少,根据Unicode)。出于各种原因,如果可能的话,我想在Windows之外复制Windows执行此操作的方式。Windows是否使用这种区域设置支持,或者它是否遵循更可预测的模式(例如,有点像C#的OrdinalIgnoreCase设置)?
我有一个创建各种文档的C#.net程序。这些文档应存储在不同的位置,并使用不同的、明确定义的名称。为此,我使用了System.Drawing.Printing.PrintDocument类。我选择MicrosoftPrinttoPDF作为打印机,声明如下:PrintDocument.PrinterSettings.PrinterName="MicrosoftPrinttoPDF";这样做时,我可以将我的文档打印成pdf文件。用户得到一个文件选择对话框。然后,他可以在此对话框中指定pdf文件的名称及其存储位置。由于文件量很大,总是找到正确的路径和名称很烦人且容易出错,我想以编程方式在此对
我想使用GNUMake来运行基于规则的makefile,它在目录结构中(在Windows文件系统上)构建一组C文件。根目录、部分子目录和部分文件包含空格。示例文件:"C:\DocumentsandSettings\\MyDocuments\TestDir\BuildMe.c"当文件路径包含空格时,GNUMake无法正常工作。我已经阅读了解决此问题的可能方法(从我的文件名中删除空格,使用8.3格式,用?或\\等替换空格)但它们都不完美(或者它们是?)有没有Elixir可以解决这个问题?顺便说一句,我受困于GNUMake,我不能使用其他制作工具。 最佳答案