使用脚本修改/组合文本文件

时间:2013-08-01 20:53:10

标签: powershell batch-file cmd

我在我的机器上运行一个由运行.bat文件触发的程序。现在,我在运行脚本之前手动修改.bat指向特定的文件/文件夹,这只需要几分钟,因为我一次在3到4个文件上运行它。在不久的将来,我将需要在200到500之间的文件组上运行此脚本。每次手动尝试编辑.bat文件将是一场噩梦。

完成的.bat看起来像:

cd\[rootfolder]
mkdir Output
cd\folderpath\to\program
this.is.the.program.exe -i "[rootfolder]\[filename1].pdf" -r "[rootfolder]" -o "[rootfolder]\Output" -u username -p password
this.is.the.program.exe -i "[rootfolder]\[filename2].pdf" -r "[rootfolder]" -o "[rootfolder]\Output" -u username -p password
this.is.the.program.exe -i "[rootfolder]\[filename3].pdf" -r "[rootfolder]" -o "[rootfolder]\Output" -u username -p password
this.is.the.program.exe -i "[rootfolder]\[filename4].pdf" -r "[rootfolder]" -o "[rootfolder]\Output" -u username -p password

我想要做的是创建另一个脚本.ps或.bat,它将从.txt文件(dir / b输出)中获取文件名列表,并将上面的信息添加到正确的位置。< / p>

cd\[rootfolder]
mkdir Output
cd\folderpath\to\program

只会出现在脚本的头部;这可以用另一种方式完成,但如果包括在内,那很好......

this.is.the.program.exe -i "[rootfolder]\

将在.txt文件中的每个文件名之前添加;到目前为止,我可以通过搜索/替换操作来管理这个...

.pdf" -r "[rootfolder]" -o "[rootfolder]\Output" -u username -p password

将添加到文件名后面。这就是我遇到问题的地方!

与文件的唯一相似之处是文件名的开头;例如“Text_”,这就是我可以进行搜索/替换操作的原因。文件的结尾是完全随机的,可以是字母,数字或符号,也可以是任何字符长度。

我想我的问题是:

有没有办法按行位置或类似的方式将文本插入.txt文件?在每一行的最后一个字符后面?

3 个答案:

答案 0 :(得分:1)

试试这个:

cd /d "rootfolder"
md output
for %%a in (*.pdf) do "folderpath\to\program\this.is.the.program.exe" -i "%%~a" -r "rootfolder" -o "rootfolder\Output" -u username -p password

或者这个:

cd /d "rootfolder"
md output
cd /d "folderpath\to\program"
for %%a in ("rootfolder\*.pdf") do "this.is.the.program.exe" -i "%%~a" -r "%%~dpa" -o "%%~dpaOutput" -u username -p password

答案 1 :(得分:0)

你可能会做这样的事情:

$rootfolder    = 'C:\path\to\rootfolder'
$outputfolder  = Join-Path $rootfolder 'Output'
$programfolder = 'C:\program\folder'
$filelist      = 'C:\path\to\files.txt'

$user = 'username'
$pass = 'password'

if ( -not (Test-Path -LiteralPath $outputfolder) ) {
  New-Item -ItemType directory -Path $outputfolder
}

Set-Location $programfolder

Get-Content $filelist | % {
  .\this.is.the.program.exe -i (Join-Path $rootfolder $_) -r $rootfolder `
    -o $outputfolder -u $user -p $pass
}

答案 2 :(得分:0)

cd\[rootfolder]
mkdir Output
cd\folderpath\to\program
for /f "delims=" %%a in (
 ' the dir /b command that generates the .txt file '
 ) do (
this.is.the.program.exe -i "[rootfolder]\%%a.pdf" -r "[rootfolder]" -o "[rootfolder]\Output" -u username -p password
)

应执行此要求。