修复运行该脚本的位置吗?

修复运行该脚本的位置吗?

我有一个来自 Karan 的批处理文件。

如何修复位置以运行此批处理我的文件位置是C:\proview\upload\EJ_daily_Temp

path=c:\program files\7-zip;%path%
for /f "tokens=1,2 delims=_" %%i in ('dir/b *_ej.zip') do ren %%i_%%j %%i.zip
for %%i in (*.zip) do 7z x %%i -o*
    
for /r %%x in (K*.jrn) do ren "%%x" ??????+????????.jrn


for /f "delims=" %%d in ('dir /ad /b') do @rd /q /s "%%d"

答案1

首先,只是一个有用的提示......批处理文件的第一行:

path=c:\program files\7-zip;%path%

存在一个问题,即每次运行批处理文件时,它都会不断添加到路径的开头,因此最终会得到一个非常长的“路径”,如下所示:

"c:\program files\7-zip;c:\program files\7-zip;c:\program files\7-zip;...<original-path>". 

如果您总是从“快捷方式”运行此批处理文件,那么可能不会出现问题。但是如果您从“命令提示符”运行它,那么就会出现问题。

要解决这个问题,您有两个选择...

选择 1:在将“foldername”添加到路径之前,首先检查“foldername”是否已存在于路径中。如果您要确保“foldername”位于路径的开头,则首先检查路径的第一个元素是否已设置为“foldername”。

如果您需要有关如何检查这些条件的帮助,请发表评论,我将提供一些示例。

选择 2:由于您无论如何都要将 7z 的路径“硬编码”到批处理文件中,因此只需将其放入变量中,并在您想要执行 7z 时使用该“变量”,如下所示:

set "zrun7z=c:\program files\7-zip\7z.exe"
for %%i in (*.zip) do "%zrun7z%" x ...

在您的问题中,您只询问如何将位置设置为“C:\proview\upload\EJ_daily_Temp”。我假设您的意思是批处理文件将找到“*_ej.zip”文件的文件夹是:“C:\proview\upload\EJ_daily_Temp”。

为此,您可以使用“CD”命令,如下所示:

c:
CD C:\proview\upload\EJ_daily_Temp

或者,只需一步:

CD /D C:\proview\upload\EJ_daily_Temp

如果您的批处理文件的其他部分无法正常工作,请对此答案发表评论或编辑您的问题。尝试提供更多详细信息以帮助其他人回答您的问题。描述(如果可以)批处理文件失败的位置。描述正确发生的事情和不正确发生的事情,并描述您希望它如何表现。给出一些“.zip”文件名称可能的示例,如果名称遵循严格的模式,请描述它。对于提取的文件的名称也一样。

相关内容