Windows I';我正在寻找一个批处理脚本,它将多个文本文件的名称附加到每个文件的第一行
我有一个包含200多个文本文件(.txt)的文件夹 我想用一种简单的方法将每个文件名添加到每个文件的第一行 示例我有一个名为Windows I';我正在寻找一个批处理脚本,它将多个文本文件的名称附加到每个文件的第一行,windows,bash,file,batch-file,evernote,Windows,Bash,File,Batch File,Evernote,我有一个包含200多个文本文件(.txt)的文件夹 我想用一种简单的方法将每个文件名添加到每个文件的第一行 示例我有一个名为“I am a file.txt”的文件,其内容如下: " I am line one I am line two " 这应该是这样的: " I am a file ===== I am line one I am line two " 我想知道是否有人可以帮我构建一个批处理脚本来实现这一点 原因是我想把我所有的文本文件上传到Evernote。但是Evernote不读取
“I am a file.txt”
的文件,其内容如下:
"
I am line one
I am line two
"
这应该是这样的:
"
I am a file
=====
I am line one
I am line two
"
我想知道是否有人可以帮我构建一个批处理脚本来实现这一点
原因是我想把我所有的文本文件上传到Evernote。但是Evernote不读取文件名,而是将注释命名为文本中的第一行。假设文件名作为参数传递给脚本,您可以使用以下方法:
#!/bin/bash
for file in "$@"
do
sed -i "1 i ${file%.*}\n=====" "$file"
done
假设您当然有可用的sed
,但既然您已经用bash
标记了问题,我想您已经安装了Cygwin。这对我来说很有效:
@echo off
pushd "pathToYourFolder"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.txt') do (
(
echo %%F
echo =====
type "%%F"
)>"%%F.new"
move /y "%%F.new" "%%F"
)
(在一个名为whater.bat的文件中刚好超过此值并运行它)
或者,更可能的情况是bash是一个错误,OP意味着批处理,与Windows一起使用。或者这也是肯定的,尽管批处理文件存在。回答之前应该仔细查看标签。无论是
bash
还是batch
。它仍然是好的,只是为了知识,不只是为了OP,而是为了其他人。这到底是怎么回事。肯定有什么遗漏了。我已将“pathToYourFolder”替换为“C:\Users\PC\Desktop\TESTING”我得到了:系统找不到文件*。txt是的,遗漏了一些:-)错误消息意味着“C:\Users\PC\Desktop\TESTING”
不包含任何*.txt
文件。你在开玩笑吧!!!我在那个文件夹中有10个文件,所有类型的文本文档(.txt)我甚至把那个批处理文件放在文件夹中,仍然得到相同的错误。你在你的机器上测试过这个代码吗?@MahmoudZalt-OMG,我刚刚意识到我有一个愚蠢的错误。我的FOR循环是普通FOR和a FOR/F之间完全失败的交叉。对此表示抱歉。它现在应该被修复了。@MahmoudZalt-现在我看到你在我之前发布了我原始代码的更正版本。干得好,我给你+1分。
@echo off
for /f "eol=: delims=" %%F IN ('dir /b /s "C:\Users\MyPC\Desktop\myDir\*.txt"') do (
(
echo %%~nF
echo ___________________________
type "%%F"
)>"%%F.new"
move /y "%%F.new" "%%F"
)
pause