Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows I';我正在寻找一个批处理脚本,它将多个文本文件的名称附加到每个文件的第一行_Windows_Bash_File_Batch File_Evernote - Fatal编程技术网

Windows I';我正在寻找一个批处理脚本,它将多个文本文件的名称附加到每个文件的第一行

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不读取

我有一个包含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不读取文件名,而是将注释命名为文本中的第一行。

假设文件名作为参数传递给脚本,您可以使用以下方法:

#!/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