0

我需要帮助在 Windows 上编写批处理脚本。我的目录 C:\OUTFiles 包含 2355 个不同长度的 .txt 文件,其中包含指向 Wikipedia 文章的链接 - 例如一个名为“Holzhausen.txt”的文件:

http://de.wikipedia.org/wiki/[[Holzhausen (Langenpreising)]], Ortsteil der Gemeinde [[Langenpreising]] http://de.wikipedia.org/wiki/[[Holzhausen (Dähre)]], Ortsteil der Gemeinde [[Dähre]] ...

我想浏览 C:\OUTFiles 中的所有文件并将每个文件的长度减少到 10 行(或者如果短于 10 行,则不要更改长度)。

此外,如果文件包含上面第一行中的 [[some text]],我需要删除所有括号 [[]]。

我如何在 Windows 上将其作为批处理脚本文件执行?我是批处理脚本的新手,我搜索了 StackOverflow 并尝试组装一个批处理脚本,但它还没有完成/工作:

@ECHO OFF
setlocal enabledelayedexpansion
set counter=1
for %%f in (*.txt) do call :p "%%f"
goto :eof

:p

SET /A maxlines=10
SET /A linecount=0

FOR /F %%A IN (*.txt) DO ( 
  IF !linecount! GEQ %maxlines% GOTO ExitLoop
  ECHO %%A 
  SET /A linecount+=1
)
SET /A counter+=1


:ExitLoop
:eof

暂停

非常感谢您提前!!佩特拉

4

1 回答 1

0

此解决方案假设您购买了我上面的建议以使用 powershell 而不是批处理。

# this line assumes current directory - adjust to point to the actual location
$files = get-childitem *.txt
foreach ($file in $files) {
    $data = get-content $file
    $count = 1
    # this assumes that you want to put the modified 
    # output in a new file and keep the original file
    $newfile = $file.name + ".new.txt"
    foreach ($line in $data) {
        if($count -gt 10) {break}
        $line = $line -replace "[\[\]]",''
        out-file -filepath $newfile -inputobject $line -Append
        $count = $count + 1
    }
}
于 2012-08-07T21:03:42.417 回答