
[英]Output multiple .csv files appending the .csv file name as the source folder name with powershell
[英]Source file name for output
我正在尝试使用 PDFtk 创建一个批处理文件,以使用源文件名(可能不同)作为输入文件名将特定目录中的合并文件突发到 output 文件夹。 例如
源目录:- D:\Temp\IN 目标目录:- D:\Temp\OUT 文件名:- abcdefgh.pdf(可能不同) 所需的 output 文件名:- abcdefgh-001.pdf、abcdefgh-002.pdf 等等
我的批处理文件将位于 D:\Script PDFtk.exe 位于 D:\PDFtk Server\bin
我试了一整天,但无法获得 output 的输入文件名。有人能帮忙吗
我现有的程序:-
CD D:\Temp\IN
for /f "tokens=*" %%A in ('dir /b D:\Temp\IN\*.pdf') do (
set prefix=%%~ni )
set outname=%prefix%-%%03d-00.pdf
path D:\PDFtk Server\bin
pdftk.exe D:\Temp\IN\%prefix% burst output D:\Temp\OUT\%outname%
exit
您的方法存在多个错误,第一个错误是在这种情况下您需要本地延迟扩展。 对于最初的%
,稍后将其用作!
.
CD D:\Temp\IN
这没关系,但如果它允许 /Drive 转移到“引用的驱动器文件夹”会更好(注意输入文件夹在这种情况下不能与使用这种方法的 output 文件夹相同,最好是 output 是你所做的兄弟姐妹或使用共同的父母更好。)
CD /D "D:\Temp\IN"
for /f "tokens=*" %%A in ('dir /b D:\Temp\IN\*.pdf') do (
set prefix=%%~ni )
您混淆了 %%A 和 %%i 它们应该是相同的,在这种情况下不需要tokens
,但是 usebackq 用于奇数文件名并添加引号,不需要当前目录,并且)
太早了。
setlocal enabledelayedexpansion
for /f "usebackq delims==" %%A in (`dir /b *.pdf`) do (
set "prefix=%%~nA"
下一部分
set outname=%prefix%-%%03d-00.pdf
再次最佳引用和需要使用扩展set "outname=.prefix!-%%03d-00.pdf"
path D:\PDFtk Server\bin
pdftk.exe D:\Temp\IN\%prefix% burst output D:\Temp\OUT\%outname%
如果合并并引用会更好你不需要使用当前目录
"D:\PDFtk Server\bin\pdftk.exe" ".prefix:.pdf" burst output "D:\Temp\OUT\!outname!"
终端支架在这里)
exit
是多余的
所以总而言之
CD /D "D:\Temp\IN"
setlocal enabledelayedexpansion
for /f "usebackq delims==" %%A in (`dir /b *.pdf`) do (
set "prefix=%%~nA"
set "outname=!prefix!-%%03d-00.pdf"
"D:\PDFtk Server\bin\pdftk.exe" "!prefix!.pdf" burst output "D:\Temp\OUT\!outname!"
)
整个命令可以简化为一行,但要显示可以进行切割的位置
尝试这个
CD /D "D:\Temp"
for /f "usebackq delims==" %%A in (`dir /b IN\*.pdf`) do (
"D:\PDFtk Server\bin\pdftk.exe" "IN\%%~A" burst output "OUT\%%~nA-%%03d-00.pdf"
)
usebackq delims==
的需要是因为后来的字符问题,如filename (1).pdf
所以我们不能缩短太多
CD /D "D:\Temp" & for /f "usebackq delims==" %%A in (`dir /b IN\*.pdf`) do ("D:\PDFtk Server\bin\pdftk.exe" "IN\%%~A" burst output "OUT\%%~nA-%%03d-00.pdf")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.