Powershell 如何为文件夹中的所有文件批量或ps向EOF添加新行?

Powershell 如何为文件夹中的所有文件批量或ps向EOF添加新行?,powershell,batch-file,cmd,scripting,Powershell,Batch File,Cmd,Scripting,我想迭代一个文件夹中的所有js文件,并为它们添加精确的行。文本应附加在文件末尾的新行中。我希望它是用windows支持的脚本语言编写的,如batch或powershell 我的伪代码如下所示: foreach file in folder append some text to file in a new line 如果每个文件都以换行符结尾,则使用可以轻松完成此操作: “%TargetFolder%\*.js”中%%F的执行( >>“%%~F”echo/这是新的文本行。 ) 或者,

我想迭代一个文件夹中的所有js文件,并为它们添加精确的行。文本应附加在文件末尾的新行中。我希望它是用windows支持的脚本语言编写的,如batch或powershell

我的伪代码如下所示:

foreach file in folder
    append some text to file in a new line

如果每个文件都以换行符结尾,则使用可以轻松完成此操作:

“%TargetFolder%\*.js”中%%F的
执行(
>>“%%~F”echo/这是新的文本行。
)
或者,如果您还希望递归到子目录:

(*.js)中“%TargetFolder%”%%F的/R
do(
>>“%%~F”echo/这是新的文本行。
)

当然,您可以先显式附加换行符:

“%TargetFolder%\*.js”中%%F的
执行(
>>“%%~F”(
回音/
echo/这是新的文本行。
)
)
当然,对于递归方法来说也是等效的


如果仅在文件尚未以此类结尾时才希望附加换行符,则可以执行以下操作:

“%TargetFolder%\*.js”中%%F的
执行(
rem/*计算结尾包含零个或多个字符的行数;
rem除最后一行未终止外,每一行都是如此
使用换行符进行rem,因为“$”固定在以下位置:*/
对于/F%%D in('findstr.*$“”%%F“^ find/C/V“'),请执行以下操作(
rem//计算文件中的总行数:
对于/F%%C in(“^<“%%~F”find/C/V“”),请执行以下操作(
>>“%%~F”(
rem//比较行计数并有条件地追加换行符:
如果%%D lss%%C回显/
echo/这是新的文本行。
)
)
)
)

同样,对于递归方法也是等效的。

使用PowerShell很容易做到这一点

Add-Content -Path 'C:\src\t\copyt\*.txt' -Encoding ascii -Value "`nEND"
或者,在.bat文件脚本中

powershell -NoLogo -NoProfile -Command ^
    Add-Content -Path 'C:\src\t\copyt\*.txt' -Encoding ascii -Value "`nEND"
如果文件不大,则要在最后一行之前添加行:

$TempFile = New-TemporaryFile

Get-ChildItem -File -Path 'C:\src\t\copyt' -Filter '*.txt' |
    ForEach-Object {
        $f = Get-Content -Path $_.FullName
        $f[0..($f.Length -2)] + "BOTTOM LINE" + $f[-1] |
            Out-File -FilePath $TempFile -Encoding default
            Remove-Item -Path $_.FullName
            Move-Item -Path $TempFile -Destination $_.FullName
    }

Remove-Item -Path $TempFile

对于Powershell,请看一看您尝试了什么,您被困在哪里?所有这些文件的末尾都有换行符吗?对于批处理,请参阅和提问。我感觉有点“贪婪”,但如果我想在最后一行之前添加一行,而不是最后一行,该怎么办?这是一个全新的情况,因为
>
不能再使用了,需要读取和重写文件,这在批量生产中并不是那么琐碎;我觉得这是值得一提的新问题,但请确保包括一个你自己的编码尝试,然后…你完全正确。问题是,很明显,论坛中没有那么多关于批处理命令的问题,我不想学习整个语法,我只需要做一些特定的事情。不过答案很好:)