<p>我建议采用更好的解决方案</p>
<p>首先使用以下命令行创建批处理文件:</p>
<pre class="lang-none prettyprint-override"><code>@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem Assign the folder path passed to batch file to environment variable FolderPath.
set "FolderPath=%~1"
rem Use the batch file path if started without a folder path argument.
if not defined FolderPath set "FolderPath=%~dp0"
rem Remove all double quotes from folder path.
set "FolderPath=%FolderPath:"=%"
if not defined FolderPath set "FolderPath=%~dp0"
rem Replace all slashes by backslashes in folder path.
set "FolderPath=%FolderPath:/=\%"
rem Make sure the folder path ends with a backslash.
if not "%FolderPath:~-1%" == "\" set "FolderPath=%FolderPath%\"
rem Check the existence of this folder and run Python on folder existing.
if exist "%FolderPath%" cd /D "C:\model\scripts" && python.exe "run_project.py" "%FolderPath%"
rem Restore the initial execution environment which includes the initial current directory.
endlocal
</code></pre>
<p>此批处理文件应存储在环境变量<code>PATH</code>中列出的其中一个文件夹中。在命令提示符窗口<code>set path</code>中运行<code>PATH</code>和<code>PATHEXT</code>两个环境变量的输出,由<code>cmd.exe</code>使用上述命令行查找<code>python.exe</code>等可执行文件和批处理文件等脚本</p>
<p>然后,在将批处理文件复制到包含要处理的文件的文件夹中时,只需双击批处理文件即可运行该批处理文件,也可以在命令提示窗口中使用文件夹路径作为参数在命令提示窗口中输入,最好按照运行<code>cmd /?</code>时的用法帮助输出完成文件/文件夹名称在命令提示窗口中</p>
<p>但最有用的方法是右键单击最终文件夹中的批处理文件,然后在菜单项<strong>桌面(创建快捷方式)</strong>的上下文子菜单<strong>中左键单击发送到</strong>。接下来,选择在用户桌面上创建的快捷方式文件,用<kbd>Ctrl+X</kbd>剪切并用<kbd>Ctrl+V</kbd>粘贴到文件夹<code>%APPDATA%\Microsoft\Windows\SendTo</code>中,该文件夹通常会扩展到类似<code>C:\Users\UserName\AppData\Roaming\Microsoft\Windows\SendTo</code>的地方</p>
<p>这使得可以在Windows文件资源管理器中的任何文件夹上单击鼠标右键,并根据快捷方式文件的名称在子菜单中打开的上下文菜单中单击鼠标左键“发送到”</strong>,以右键单击的文件夹的完全限定文件夹名称作为Windows传递的第一个参数启动批处理文件将文件资源管理器添加到批处理文件。因此,批处理文件可用于任何文件夹,而无需在批处理文件周围进行复制或在命令提示窗口中手动输入文件夹路径</p>
<p>即使在命令提示符窗口中手动输入文件夹路径时使用错误,批处理文件也尽可能具有故障保护功能,但在运行批处理文件时,此参数可能不正确。也可以从另一个批处理文件调用批处理文件,而不影响父批处理文件环境</p>
<p>可以删除以<code>rem</code>开头的命令行,因为这些只是解释代码的注释</p>
<p>为了理解所使用的命令及其工作方式,请打开<a href="https://www.howtogeek.com/235101/" rel="nofollow noreferrer">command prompt</a>窗口,在那里执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面</p>
<ul>
<li><code>call /?</code>。。。解释<code>%~dp0</code>和<code>%~1</code></li>
<li><code>cd /?</code></li>
<li><code>echo /?</code></li>
<li><code>endlocal /?</code></li>
<li><code>for /?</code></li>
<li><code>if /?</code></li>
<li><code>rem /?</code></li>
<li><code>set /?</code></li>
<li><code>setlocal /?</code></li>
</ul>
<p>另请参见<a href="https://stackoverflow.com/a/25344009/3074564">single line with multiple commands using Windows batch file</a>,以了解只有在将当前目录更改为<code>C:\model\scripts</code>成功时才运行<code>&&</code>的运算符<code>python.exe</code>的说明,该操作应该不会失败,但谁能保证将来的数据</p>