天道酬勤,学无止境

Trailing whitespace in filename

I tried using a batch-script from this answer to color some text in the console.

Unfortunately I had some unintended behaviour, using ´3 :s as string for the call, which created a file named: "┬┤3 ", with a trailing whitespace.

Windows (10) (harddrive using NTFS) somehow can't handle a trailing whitespace in filenames, therefore I can't get rid of it.


I tried using delete, rename, move in the Windows Explorer and Total Commander - all failed.

Using the command prompt: DEL, MOVE and others results in a "cannot find"

Using ATTRIB outputs: "target of symbolic link "┬┤3 " does not exist"


To create such a file in you current directory:

SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do     rem"') do (
    set "DEL=%%a"
)
call :colorEcho 09 "´3 :s  `"
exit
:colorEcho
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1i

评论

Win32 File Namespaces

For file I/O, the "\\?\" prefix to a path string tells the Windows APIs to disable all string parsing and to send the string that follows it straight to the file system.

To create the file in the batch script path:

> "\\?\%~dp0´3 :s " type nul

To remove:

del "\\?\%~dp0´3 "

The :s is a NTFS stream suffix which can be omitted for the task of deleting the file.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 我的差异包含尾随空格-如何摆脱它?(My diff contains trailing whitespace - how to get rid of it?)
    问题 我试过在TextWrangler中编辑php文件,并在NetBeans和vim中将行尾设置为Unix。 当我将差异保存到补丁中并尝试应用它时,它会出现空白错误。 当我输入git diff我可以在行尾看到^M ,但是如果我在vim中手动删除它们,它说我的补丁文件已损坏,那么该补丁根本就不适用。 我使用以下命令创建补丁: git diff > patchname.patch 我通过签出要修补的文件的干净版本并键入来应用它 git apply patchname.patch 如何创建没有空格错误的补丁? 我之前创建过补丁,但从未遇到过此问题。 回答1 您确定这些是硬错误吗? 默认情况下,git将警告空白错误,但仍会接受它们。 如果它们是硬错误,那么您必须更改一些设置。 您可以使用--whitespace=标志将git apply在每次调用的基础上进行控制。 尝试 git apply --whitespace=warn patchname.patch 这将强制执行默认行为,即警告但接受。 您也可以使用--whitespace=nowarn完全删除警告。 控制它的配置变量是apply.whitespace 。 作为参考,这里的空格错误不是您的补丁程序有错误。 在默认情况下,git将在应用补丁程序时抱怨这是一种代码风格的事情。 值得注意的是,它不喜欢尾随空白。 同样, git
  • 仅针对某些文件的缩进配置(indentation configuration only for some files)
    问题 我想用 git config core.whitespace tab-in-indent,tabwidth=4 我想为 c++ 文件设置这些设置,以便在使用 git diff 时出现错误缩进时收到警告。 但是,我也有需要选项卡的 Makefile。 有没有办法为不同的文件配置不同的空白设置? 回答1 您可以使用 gitattributes 来调整这些设置。 这是我的 .gitattributes 文件的片段: *.c text diff=cpp whitespace=trailing-space,space-before-tab,tab-in-indent *.cpp text diff=cpp whitespace=trailing-space,space-before-tab,tab-in-indent *.h text diff=cpp whitespace=trailing-space,space-before-tab,tab-in-indent *.hpp text diff=cpp whitespace=trailing-space,space-before-tab,tab-in-indent *.py text diff=python whitespace=trailing-space,space-before-tab,tab-in-indent *.tex
  • 如何在Eclipse中自动删除尾随空格?(How to auto-remove trailing whitespace in Eclipse?)
    问题 这个问题有两个部分,其中一个我已经有了答案。 如何从正在编辑的整个文件中自动删除结尾的空格? ->答案:使用AnyEdit插件,可以将其设置为在保存到文件时执行此操作。 如何仅从我更改的行中自动删除结尾的空格? ->我不知道,将不胜感激。 回答1 从要编辑的整个文件中删除空格: 首选项-> Java- >编辑器->保存动作->检查在保存时执行选定的动作->检查其他动作->单击配置。- >转到代码组织选项卡->检查删除尾随空白->选择所有行。 仅从我更改的行中删除空格: 首选项-> Java- >编辑器->保存动作->选中“在保存时执行选定的动作->检查格式化源代码->选择格式化编辑的行。 请注意,不必在“格式器”页面上单击“配置格式器设置” -所有代码样式都会自动包括删除结尾的空格。 至少我在Formatter配置中找不到此设置,并且它对于内置Java约定,Eclipse,Eclipse 2.1样式以及GoogleStyle都是开箱即用的。 使用此设置时,显然您还需要关闭问题第1部分的解决方案。 Eclipse version checked: 4.5.2, 4.11 回答2 我认为您的问题是关于Java代码的。 如果是这样,您实际上不需要任何额外的插件即可完成1)。 您可以转到“首选项”->“ Java”->“编辑器”->“保存操作”,然后对其进行配置以删除尾随空格。
  • 如何删除多个文件的尾随空格?(How to remove trailing whitespaces for multiple files?)
    问题 是否有任何工具/ UNIX单个内衬可以在位删除多个文件的尾随空格。 例如,可以与find结合使用的一个。 回答1 你要 sed --in-place 's/[[:space:]]\+$//' file 这将删除所有POSIX标准定义的空白字符,包括垂直制表符和换页符。 此外,仅当尾随空格确实存在时,它才会进行替换,这与使用零或多个匹配符( * )的其他答案不同。 --in-place只是-i的长形式。 我更喜欢在脚本中使用长格式,因为它更能说明标记的实际作用。 它可以很容易地与find集成在一起,如下所示: find . -type f -name '*.txt' -exec sed --in-place 's/[[:space:]]\+$//' {} \+ 如果您使用的是Mac 正如评论中指出的那样,如果您未安装gnu工具,则以上操作将无效。 如果是这样,您可以使用以下方法: find . -iname '*.txt' -type f -exec sed -i '' 's/[[:space:]]\{1,\}$//' {} \+ 回答2 与其他所有都需要GNU sed的解决方案不同,该解决方案应该可以在实现POSIX标准命令的任何Unix系统上使用。 find . -type f -name "*.txt" -exec sh -c 'for i;do sed 's/[[
  • 在git中应用补丁时出错(Error while applying a patch in git)
    问题 我有一个浅表克隆,在上面进行了三次提交。 这是日志: $ git log --oneline --graph --decorate --all * d3456fd(HEAD,master)补丁3 * 9713822补丁2 * 6f380a6补丁1 *来自完整克隆的8a1ce1e(来源/主数据,来源/ HEAD) * 7c13416从浅处添加 * 3b3ed39删除了电子邮件 * cfbed6c的进一步修改 *为版本2.1添加了a71254b *版本7的7347896(嫁接)更改 现在我从这里创建一个补丁: $ git format-patch -k --stdout原始> ../format_since_origin.patch 我想将此补丁应用到另一个克隆(即完整克隆)中。 这是日志: $ git log --oneline --graph --decorate --all * 8a1ce1e(HEAD,起源/母版,母版)来自完整克隆 * 7c13416从浅处添加 * 3b3ed39删除了电子邮件 * cfbed6c的进一步修改 *为版本2.1添加了a71254b *版本7的7347896更改 * b1a8797更改为ttwo文件 * 603710c更改了测试报告 * 16b20b3添加了test_report.txt * f0871ea修改的file1.xml *
  • 如何使用sed删除尾随空格?(How to remove trailing whitespaces with sed?)
    问题 我有一个简单的Shell脚本,可从文件中删除结尾的空格。 有什么方法可以使此脚本更紧凑(无需创建临时文件)? sed 's/[ \t]*$//' $1 > $1__.tmp cat $1__.tmp > $1 rm $1__.tmp 回答1 对于Linux和Unix,可以使用sed就地选项-i : sed -i 's/[ \t]*$//' "$1" 请注意,该表达式将删除OSX上的尾随t (您可以使用gsed避免此问题)。 它也可能在BSD上将其删除。 如果没有ged,则OSX上的sed语法正确(但难于理解): sed -i '' -E 's/[ '$'\t'']+$//' "$1" 三个单引号的字符串最终会串联到单个参数/表达式中。 bash中没有串联运算符,您只需将字符串一个接一个地放置,并且它们之间没有空格。 $'\t'解析为bash中的文字制表符(使用ANSI-C引号),因此该制表符已正确地连接到表达式中。 回答2 至少在Mountain Lion上,Viktor的答案还会在行尾添加“ t”字符。 以下修复了该问题: sed -i '' -e's/[[:space:]]*$//' "$1" 回答3 感谢codaddict建议使用-i选项。 以下命令解决了雪豹上的问题 sed -i '' -e's/[ \t]*$//' "$1" 回答4 最好同时引用$ 1: sed
  • git-diff忽略^ M(git-diff to ignore ^M)
    问题 在某些文件包含^ M作为换行符的项目中。 显然,不可能对这些文件进行区分,因为git-diff将其视为整个文件仅一行。 与以前的版本有何不同? 是否有类似“比较时将^ M作为换行符”的选项? prompt> git-diff "HEAD^" -- MyFile.as diff --git a/myproject/MyFile.as b/myproject/MyFile.as index be78321..a393ba3 100644 --- a/myproject/MyFile.cpp +++ b/myproject/MyFile.cpp @@ -1 +1 @@ -<U+FEFF>import flash.events.MouseEvent;^Mimport mx.controls.*;^Mimport mx.utils.Delegate \ No newline at end of file +<U+FEFF>import flash.events.MouseEvent;^Mimport mx.controls.*;^Mimport mx.utils.Delegate \ No newline at end of file prompt> 更新: 现在,我编写了一个Ruby脚本,用于检出最新的10个修订并将CR转换为LF。 require 'fileutils' if
  • 使git在提交之前自动删除尾随空格(Make git automatically remove trailing whitespace before committing)
    问题 我正在与团队一起使用git,并希望从diff,日志,合并等中删除空格更改。我假设最简单的方法是让git自动删除结尾的空格(以及其他空格错误) )中的所有提交。 我试图将以下内容添加到~/.gitconfig文件中,但是在我提交时它什么也没做。 也许它是为不同的东西而设计的。 有什么解决方案? [core] whitespace = trailing-space,space-before-tab [apply] whitespace = fix 如果有人对红宝石有任何特定的想法,我会使用红宝石。 下一步是提交之前自动进行代码格式化,但这是一个难题,并不是真正引起大问题。 回答1 这些设置( core.whitespace和apply.whitespace )不是用来删除结尾的空格,而是: core.whitespace :检测到它们并引发错误 apply.whitespace :剥离它们,但仅在修补过程中,而不是“始终自动” 我相信git hook pre-commit会为此做得更好(包括删除尾随空格) 请注意,在任何给定时间,您都可以选择不运行pre-commit挂钩: 临时: git commit --no-verify . 永久: cd .git/hooks/ ; chmod -x pre-commit cd .git/hooks/ ; chmod -x pre
  • Using Pylint to display error and warnings
    So I started using Pylint but since I am using tabs instead of spaces it is giving me as warnings, also since some methods are from base class, that are also as instance of 'GalleryUi' has no 'setModel' member while it is has QAbstractTableModel as base class, so how do i set up the Pylint to not consider these things... No config file found, using default configuration ************* Module python.gallery W: 7, 0: Found indentation with tabs instead of spaces (mixed-indentation) W: 8, 0: Found indentation with tabs instead of spaces (mixed-indentation) C: 13, 0: Trailing whitespace (trailing
  • 使用Pylint显示错误和警告(Using Pylint to display error and warnings)
    问题 所以我开始使用Pylint,但是由于我使用制表符而不是空格,因此警告我,而且由于某些方法来自基类,例如'GalleryUi'的实例也没有'setModel'成员,而它具有QAbstractTableModel作为基类,那么我该如何设置Pylint而不考虑这些问题... No config file found, using default configuration ************* Module python.gallery W: 7, 0: Found indentation with tabs instead of spaces (mixed-indentation) W: 8, 0: Found indentation with tabs instead of spaces (mixed-indentation) C: 13, 0: Trailing whitespace (trailing-whitespace) C: 15, 0: Trailing whitespace (trailing-whitespace) W: 15, 0: Found indentation with tabs instead of spaces (mixed-indentation) W: 16, 0: Found indentation with tabs instead
  • Bash读取会忽略前导空格(Bash read ignores leading spaces)
    问题 我有以下内容的文件a.txt aaa bbb 当我执行以下脚本时: while read line do echo $line done < a.txt > b.txt 生成的b.txt包含以下内容 aaa bbb 可以看出,行的前导空格已被删除。 我如何保留领导空间? 回答1 逐行读取数据的Bash FAQ条目中对此进行了介绍。 read命令修改每行读取的内容; 默认情况下,它将删除所有前导和尾随空格字符(空格和制表符,或IFS中存在的任何空格字符)。 如果不希望这样,则必须清除IFS变量: # Exact lines, no trimming while IFS= read -r line; do printf '%s\n' "$line" done < "$file" 正如查尔斯·达菲(Charles Duffy)正确指出的那样(而我专注于IFS问题却错过了); 如果要在输出中看到空格,则在使用它时还需要引用该变量,否则外壳将再次删除空格。 与原始代码相比,该引述摘录中的一些其他差异的注释。 在先前链接的页面顶部的单个句子中介绍了使用-r参数进行read过程。 读取的-r选项可防止反斜杠解释(通常用作反斜杠换行符,以在多行上继续)。 如果没有此选项,则输入中的任何反斜杠都将被丢弃。 您几乎应该始终将-r选项与read一起使用。
  • Atom文本编辑器在保存时删除结尾的空格(Atom text editor remove trailing whitespace on save)
    问题 我使用Sublime text 。 现在我正在尝试Atom 。 当我以崇高的文本格式保存任何文件时,它不包含任何尾随的空白行。 但是将任何文件保存在Atom留下空白行。 如何强制Atom不要留下尾随空格? 回答1 在“ Atom Preferences转到“ Packages选项卡,然后搜索whitespace 。 单击whitespace包,然后取消选中Ensure Single Trailing Newline选项 回答2 在全局级别上,可以使用Whitespace软件包中的settings来更改此settings ,但是如果要针对特定​​语言禁用它,则必须在config.cson中使用语法范围的属性。 '.text.html.php': # php overrides whitespace: ensureSingleTrailingNewline: false removeTrailingWhitespace: false '.source.ruby': # ruby overrides whitespace: ensureSingleTrailingNewline: false removeTrailingWhitespace: false 要查看语言范围,请转到“ Packages选项卡并搜索您的语言。 单击语言包的设置,您可以看到范围: 回答3 转到软件包并找到
  • 从XML文档获取所有文本?(Get all text from an XML document?)
    问题 我如何以单个字符串的形式获取XML文档的所有文本内容-像这个Ruby / hpricot示例,但使用Python。 我想用一个空格替换XML标签。 回答1 编辑:这是我以为单空格缩进是正常的情况下发布的答案,并且正如评论中提到的那样,这不是一个好答案。 看看其他的一些更好的解决方案。 这是离开这里,只是为了存档的原因,不按它! 您要求输入lxml: reslist = list(root.iter()) result = ' '.join([element.text for element in reslist]) 或者: result = '' for element in root.iter(): result += element.text + ' ' result = result[:-1] # Remove trailing space 回答2 使用stdlib xml.etree import xml.etree.ElementTree as ET tree = ET.parse('sample.xml') print(ET.tostring(tree.getroot(), encoding='utf-8', method='text')) 回答3 我真的很喜欢BeautifulSoup,如果我们可以避免的话,宁愿不要在HTML上使用正则表达式。 改编自:
  • Python:读取文件时如何忽略#注释行(Python: How to ignore #comment lines when reading in a file)
    问题 在Python中,我刚刚阅读了文本文件中的一行,并且我想知道如何编写代码以忽略该行开头带有#的注释。 我认为应该是这样的: for if line !contain # then ...process line else end for loop 但是我是Python的新手,我不知道语法 回答1 您可以使用startswith() 例如 for line in open("file"): li=line.strip() if not li.startswith("#"): print line.rstrip() 回答2 我建议您在看到#字符时不要忽略整行。 只需忽略其余部分。 您可以使用名为partition的字符串方法函数轻松地做到这一点: with open("filename") as f: for line in f: line = line.partition('#')[0] line = line.rstrip() # ... do something with line ... partition返回一个元组:分区字符串之前的所有内容,分区字符串以及分区字符串之后的所有内容。 因此,通过使用[0]进行索引,我们可以将分区字符串之前的部分作为索引。 编辑:如果您使用的Python版本没有partition() ,则可以使用以下代码: with open(
  • NetBeans 能否在保存时删除尾随空格并将制表符更改为空格?(Can NetBeans remove trailing whitespace and change tabs to spaces on save?)
    问题 我刚刚开始使用 NetBeans,并且正在尝试解决以下问题: 使其在保存时删除尾随空格。 我知道您可以手动调用它,但是如果您忘记了它会很烦人。 可以在保存时自动完成吗? 我希望这样做是因为它使代码保持整洁,因为当您在代码中移动并且文本光标到处都是因为您看不到尾随空格时,这真的很烦人,并且因为尾随空格对 HTML 有意想不到的影响布局和其他东西。 使选项卡在您键入时自动分成 4 个空格,而不是在保存时转换,或者更糟的是,仅在手动调用时进行转换。 回答1 [原文]对于您的第一个问题,如何设置 NetBeans 以删除尾随空格,答案是(目前)没有设置来控制它。 它自动发生,但不是每一行。 空格只会从您编辑的行中删除(如果手动调用,则从整个文件中删除)。 有关更完整的解释,请参阅 Petr Pisl 标题为“删除尾随空格”的博客条目。 (请注意,尽管他在博客中讨论 NetBeans 的 PHP 功能,但此特定功能适用于所有 NetBeans 支持的语言共享的基本编辑器。) [更新]正如其他人在下面的评论和答案中指出的那样,该功能从 7.0 版开始可用。 对于您的第二个问题,将编辑器设置为在您键入时自动将制表符转换为空格,您可以在“编辑器格式”选项中找到该设置: 单击工具菜单,然后选择选项单击顶部图标行中的编辑器单击格式选项卡在语言字段中,确保选择了所有语言在类别字段中
  • 什么是尾随空格,我该如何处理?(what is trailing whitespace and how can I handle this?)
    问题 我的一些代码: if self.tagname and self.tagname2 in list1: try: question = soup.find("div", "post-text") title = soup.find("a", "question-hyperlink") self.list2.append(str(title)+str(question)+url) current += 1 except AttributeError: pass logging.info("%s questions passed, %s questions \ collected" % (count, current)) count += 1 return self.list2 pep8 警告是: trailing whitespace 37:try trailing whitespace 43:pass 你能告诉我这是什么吗? 回答1 尾随空格是行上最后一个非空格字符之后的任何空格或制表符,直到换行符。 在您发布的问题中, try:之后有一个额外的空格,而pass之后有 12 个额外的空格: >>> post_text = '''\ ... if self.tagname and self.tagname2 in list1: ... try: ... question =
  • 配置 SublimeLinter 以忽略尾随空格(Configuring SublimeLinter to ignore trailing whitespace)
    问题 当我将 SublimeLinter 用于带有 javascript 的 Sublime Text 2 时,只要有尾随空格,它就会显示红色感叹号图标,这应该不是 javascript 的问题。 我做了一些研究,发现我可以根据此处找到的错误代码将以下代码添加到包用户设置 (SublimeLinter.sublime-settings) 中:https://github.com/jcrocholl/pep8/blob/master/ pep8.py { "pep8_ignore": [ "E200", "W200", "200" ] } 但由于某种原因,错误图标仍然显示。 回答1 你找错了地方——PEP8 用于 Python 代码检查。 SublimeLinter 默认使用 JSHint 来 lint JavaScript 文件。 在这种情况下,您可以使用此 SublimeLinter 配置来消除 JavaScript 尾随空白警告: { "jshint_options": { "trailing": false } } 请参阅 JSHint 选项#trailing 但老实说,这不是理想的方式。 尾随空格是纯粹的邪恶。 为什么,你可能会问? 好吧,我想到了几个原因: 提交噪音。 “中断”文本编辑器。 在 Programmers.SE 上查看此相关问题的答案最后
  • MySQL 选择包含前导或尾随空格的字段(MySQL select fields containing leading or trailing whitespace)
    问题 我可以使用 MySQL TRIM()方法使用UPDATE清除包含前导或尾随空格的字段,如下所示: UPDATE Foo SET field = TRIM(field); 我想在运行之前实际查看这将影响的字段。 我试过了,但返回 0 结果: SELECT * FROM Foo WHERE field != TRIM(field); 看起来这应该有效,但事实并非如此。 有人有解决方案吗? 另外,好奇为什么这不起作用...... 回答1 如 CHAR 和 VARCHAR 类型中所述: 所有 MySQL 归类都是PADSPACE类型。 这意味着 MySQL 中的所有CHAR和VARCHAR值都会在不考虑任何尾随空格的情况下进行比较。 在 LIKE 运算符的定义中,手册指出: 特别是,尾随空格很重要,这对于使用 = 运算符执行的 CHAR 或 VARCHAR 比较而言并非如此: 正如这个答案中提到的: 此行为在 SQL-92 和 SQL:2008 中指定。 出于比较的目的,较短的字符串被填充到较长字符串的长度。 从草案(8.2 <比较谓词>): 如果 X 的字符长度不等于 Y 的字符长度,那么为了比较的目的,较短的字符串被有效地替换为自身的副本,该副本已通过连接扩展到较长字符串的长度在一个或多个填充字符的右侧,其中填充字符是根据 CS 选择的。 如果 CS 具有 NO PAD 特性
  • Git ignore trailing whitespace in markdown files only
    I have a markdown file with lines that have trailing whitespace (which is correct and should be commited). I'm unable to add these changes using git add -p to the index because git complains about trailing whitespace. They are added correctly if I use git add -A, but I want it to work with git add -p. I have in my ~/.gitconfig: [core] whitespace = trailing-space,space-before-tab This has been working fine since for the most part I DO want to warn on trailing whitespace (it is incorrect in HTML, JS and Ruby files). How do I ignore the trailing whitespace in Markdown files only?
  • 如何自动删除vim中的尾随空格(How can you automatically remove trailing whitespace in vim)
    问题 我在尝试在git中提交某些文件时遇到“尾随空白”错误。 我想在保存python文件之前自动删除这些结尾的空格字符。 您可以配置vim来做到这一点吗? 如果是这样,怎么办? 回答1 我在这里找到了答案。 将以下内容添加到我的.vimrc文件即可达到目的。 autocmd BufWritePre *.py :%s/\s\+$//e 回答2 以上编译加上保存光标位置: function! <SID>StripTrailingWhitespaces() if !&binary && &filetype != 'diff' let l:save = winsaveview() keeppatterns %s/\s\+$//e call winrestview(l:save) endif endfun autocmd FileType c,cpp,java,php,ruby,python autocmd BufWritePre <buffer> :call <SID>StripTrailingWhitespaces() 如果要将其应用于保存到任何文件,请省略第二个autocmd并使用通配符* : autocmd BufWritePre,FileWritePre,FileAppendPre,FilterWritePre * \ :call <SID