1

我正在我的机器上运行一个由运行 .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 输出)中获取文件名列表,并将上面的信息添加到正确的位置。

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 文件?在每行的最后一个字符后面?

4

3 回答 3

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
于 2013-08-01T21:32:59.350 回答
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
)

应该执行这个要求。

于 2013-08-02T00:09:47.810 回答
0

In you'd probably do something like this:

$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
}
于 2013-08-01T22:31:15.490 回答