文件名

时间:2018-01-25 09:38:00

标签: batch-file cmd filesystems whitespace trailing

我尝试使用this答案中的批处理脚本为控制台中的某些文字着色。

不幸的是,我有一些非预期的行为,使用´3 :s作为string进行调用,创建了一个名为“┬┤3”的文件,带有一个尾随空格。

Windows(10)(使用NTFS的硬盘)以某种方式无法处理文件名中的尾随空格,因此我无法摆脱它。

我尝试在Windows资源管理器和Total Commander中使用deleterenamemove - 都失败了。

使用命令提示符:DELMOVE和其他人导致“无法找到”

使用ATTRIB输出:“符号链接的目标”┬┤3“不存在”

要在当前目录中创建此类文件:

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

1 个答案:

答案 0 :(得分:2)

Win32 File Namespaces

  

对于文件I / O,&#34; \\?\&#34;路径字符串的前缀告诉Windows API禁用所有字符串解析并将其后面的字符串直接发送到文件系统。

要在批处理脚本路径中创建文件:

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

删除:

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

:s是一个NTFS流后缀,可以省略删除文件的任务。