Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何在名称以特定短语开头的文件上运行可执行文件?(Windows 7)_Batch File_Command Line_Pdflatex - Fatal编程技术网

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

Batch file 如何在名称以特定短语开头的文件上运行可执行文件?(Windows 7),batch-file,command-line,pdflatex,Batch File,Command Line,Pdflatex,我想在多个.tex文件上运行pdflatex.exe,所有文件都以我希望在进程开始前得到提示的某个短语开头 我该怎么做 我要处理的文件的名称如下: Chap01S01SS01_Description_Name_Whatever.tex 因此,他们的名字都以: Chap01 Chap02 and so forth... 所有名称以.tex结尾 显然,各章节的数字各不相同。这就是为什么我想用提示让自己变得简单:如果我想只运行第3章第2节的文件,我运行它们,在某个时候我想重新生成第4章和第5章的所

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

我该怎么做

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

Chap01S01SS01_Description_Name_Whatever.tex
因此,他们的名字都以:

Chap01
Chap02
and so forth...
所有名称以
.tex
结尾

显然,各章节的数字各不相同。这就是为什么我想用提示让自己变得简单:如果我想只运行第3章第2节的文件,我运行它们,在某个时候我想重新生成第4章和第5章的所有文件。。。等等

解决方案 完全归功于,我刚刚添加了参数
-interaction=nonstopmode--shell escape
,用于pdflatex。如果您知道关于TikZ/pgfplots的“外部化”代表什么,请使用它,否则请删除
--shell escape

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

@ECHO OFF
SETLOCAL
设置“sourcedir=U:\sourcedir”
SET/p mask=“选择哪些*.tex文件?”
PUSHD“%sourcedir%”
对于/f“tokens=1*delims=“%%a IN(
'dir/b/a-d“%mask%*.tex”'
)做(
ECHO(pdflatex.exe“%%a”任何可能包含“%%~na”的其他参数
)
流行音乐
后藤:EOF
您需要更改
sourcedir
的设置以适应您的情况,或者如果愿意,甚至可以使用类似的
set/p
方案来输入所需的目录

由于您没有说明pdflatex命令行的外观,因此我只能显示指针


所需的
pdflatex
命令仅用于测试目的。验证命令正确后,更改
ECHO(pdflatex
pdflatex
来实际处理文件。

假设您有一个通配符规范,它匹配您想要的所有文件,并且只匹配这些文件,那么处理这些文件就像

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

示例会很好,包括要处理的文件和要处理的文件-exclude@Magoo谢谢你的评论。编辑了op.HTH?好的,这是目前为止最好的一个。正在进行……你对最终结果感兴趣吗?我相信有人会感兴趣。当然。:)编辑了这篇文章。这是一个好看的答案。Magoo对我个人来说有点直截了当,所以我目前正在努力实现他/她的一个。谢谢你的努力。我当然会尝试它,只是为了学习。
@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