将txt文件的文件名复制到第一行

时间:2015-07-18 17:30:33

标签: batch-file

作为evernote的新用户(在Windows上),我发现无法将导入的txt文件的标题设置为文件名。是否有任何简单的代码可以扫描文件夹中的所有txt文件并插入txt文件的文件名(不带.txt)和新行? (这意味着原始文件的第1行被移动到第3行)。先谢谢你。

1 个答案:

答案 0 :(得分:2)

以下是此任务的批处理代码:

@echo off
for %%I in (*.txt) do (
    echo %%~nI>"%TEMP%\FileName.tmp"
    echo/>>"%TEMP%\FileName.tmp"
    copy /B "%TEMP%\FileName.tmp" + "%%~I" "%%~I.tmp">nul
    del "%%~I"
    ren "%%~I.tmp" "%%~nxI"
)
del "%TEMP%\FileName.tmp" 2>nul

对于当前工作目录中具有扩展名TXT的每个文件,没有路径和文件扩展名的文本文件的名称将与临时文件的目录中的空行一起写入临时文件。

此临时文件的下一个内容和当前文本文件一起作为二进制数据流复制到当前目录中与文本文件同名的新文件,但附加了.tmp作为新扩展名。参数/B是必要的,以避免该命令复制追加^Z(十六进制代码值1A)。

接下来删除原始文本文件,现在将第一行插入文件名的.txt.tmp文件和第二行的空白行重命名为.txt。

最后,在临时文件的目录中删除临时文件。

有关已使用命令以及%%~I%%~nI%%~nxI表示打开命令提示符窗口的更多详细信息,请执行以下命令并阅读所有帮助页面。每个命令的命令提示符窗口。

  • copy /?
  • del /?
  • for /?
  • ren /?

另请阅读Microsoft文章Using command redirection operators,了解>>>2>nul的解释。