如何在名称以特定短语开头的文件上运行可执行文件? (Windows 7的)

时间:2014-08-13 14:05:38

标签: batch-file command-line pdflatex

我想在多个.tex文件上运行pdflatex.exe,所有文件都以某个短语开头,我希望在流程开始之前获得提示。

我该怎么做?

我想要处理的文件的名称如下:

Chap01S01SS01_Description_Name_Whatever.tex

所以他们所有的名字都以:

开头
Chap01
Chap02
and so forth...

所有名称以.tex结尾。

显然,这些章节和章节的数字各不相同。这就是为什么我想通过提示让自己变得容易:如果我想在第3章中运行第2部分的文件,我会运行它们,在某些时候我会这样做喜欢重新生成第4章和第5章的所有文件......等等。

@ECHO OFF
SETLOCAL
SET "sourcedir=D:\files\"
SET /p mask="Which .tex-files?"
PUSHD "%sourcedir%"
FOR /f "tokens=1*delims=" %%a IN (
  'dir /b /a-d "%mask%*.tex" '
 ) DO (
 pdflatex.exe -interaction=nonstopmode --shell-escape "%%a" any other parameters perhaps containing "%%~na"
 )
POPD

GOTO :EOF

完全归功于Magoo,我刚刚添加了参数-interaction=nonstopmode --shell-escape以供pdflatex使用。如果你知道"外化"代表TikZ / pgfplots,使用它,否则删除 --shell-escape

BONUS 只需复制文件并写入lualatex.exe而不是pdflatex.exe以获取巨大的图片。请注意,您的序言必须相应地进行组织。

2 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET /p mask="select which *.tex files ? "
PUSHD "%sourcedir%"
FOR /f "tokens=1*delims=" %%a IN (
  'dir /b /a-d "%mask%*.tex" '
 ) DO (
 ECHO(pdflatex.exe "%%a" any other parameters perhaps containing "%%~na"
)
POPD

GOTO :EOF

如果您愿意,您需要更改sourcedir的设置以适应您的情况,甚至使用类似的set /p方案输入所需的目录。

由于您还没有说明pdflatex命令行的内容,我只能显示指针。

所有pdflatex命令仅用于ECHO用于测试目的。 在您确认命令正确后,将ECHO(pdflatex更改为pdflatex以实际处理文件。

答案 1 :(得分:1)

假设你的通配符规范与你想要的所有文件相匹配,并且只有那些文件,那么处理它们就像

这样简单了。
FOR %%f IN (Chap01*) DO ECHO Processing file: %%f

因此,该问题会在提示用户后减少创建通配符规范。您可以使用SET /P以交互方式接受用户输入,例如:

SET chapter=
SET /P chapter=Chapter to process (ENTER for everything)?
REM now %chapter% contains the input, or blank if none was given

将所有内容放在一起以获得概念证明:

@ECHO OFF
SETLOCAL
SET chapter=
SET section=
SET /P chapter=Chapter to process (ENTER for all)?
SET /P section=Section to process (ENTER for all)?

REM We 'll be left-padding the values to two digits with zeroes
SET chapter_spec=??
SET chapter=00%chapter%
SET section=00%section%
IF NOT "%chapter%"=="00" SET chapter_spec=%chapter:~-2%
IF NOT "%section%"=="00" SET section_spec=S%section:~-2%

SET wildcard=Chap%chapter_spec%%section_spec%*.tex
ECHO Files to be processed:
FOR %%f IN (%wildcard%) DO ECHO %%f