使用.bat文件在两个版本的软件重命名文件夹之间切换

时间:2016-05-26 11:25:49

标签: batch-file

我需要一直在同一软件的两个版本之间切换。让我们说" St5"和" St6"。这两个版本都使用相同的设置,因此我需要从同一个文件夹(C:/ St)启动它们。出于这个原因,我需要重命名我需要工作的文件夹版本" St5"或" St6"到" St"我将这两个版本放在不同的文件夹中,并且我重命名了一个我需要的版本(C:/ St),之后我将从" St"中启动该版本。夹。出于这个原因,我需要创建两个不同的.bat文件(St5.bat和St6.bat),这些文件将检查" St"中的软件版本。文件夹,如果需要重命名文件夹并启动软件,或者如果不是只是启动软件。

因为我需要识别每个文件夹中的版本,所以我在每个文件夹中创建了一个.txt文件,其中包含该文件夹中包含的软件版本,在本例中为" _St_5.txt&#34 ;和" _St_6.txt"。

我创建了一个.bat文件以使事情更加自动,但不幸的是我无法使其工作。贝娄是我实现目标的尝试,但我不明白什么是错的。请帮忙。

=======================

IF EXIST C:\St\\_St_5.txt (
start /d "C:\St" St.exe
)

ELSE (

for /D %%f in "C:\St\" do rename "St" "St6"
rename "C:\St5" "C:\St"

start /d "C:\St" St.exe

)

exit

1 个答案:

答案 0 :(得分:0)

我建议在此任务中使用以下注释批处理文件:

@echo off
rem First always check if application ST is currently not running.

:CheckRunning
cls
%SystemRoot%\System32\tasklist.exe /FI "IMAGENAME eq St.exe" 2>nul | %SystemRoot%\System32\find.exe /I "St.exe" >nul
if errorlevel 1 goto CheckVersion
echo.
echo ST is currently running. Please exit all instances of ST.
echo.
pause
goto CheckRunning

:CheckVersion
if "%~1" == "5" (
    if exist C:\St5\* goto SwitchToST5
    goto StartST
)
if "%~1" == "6" (
    if exist C:\St6\* goto SwitchToST6
    goto StartST
)
goto ToggleVersion

rem If there is the directory C:\St5, the directory C:\St contains
rem version 6 of application ST. Therefore a switch from version 6 to
rem version 5 must be done now. Otherwise C:\St contains version 5 of
rem application ST and therefore a switch from version 5 to version 6
rem must be done now.

rem NOTE: There is no check made if directory C:\St exists at all and
rem       if the directory renames are both successful. A directory
rem       rename could fail if any running process uses one of the two
rem       directories or a subdirectory of them as current directory or
rem       there is a file from the directories opened by an application.

:ToggleVersion
if exist C:\St5\* goto SwitchToST5
if exist C:\St6\* goto SwitchToST6

echo.
echo ERROR: There is whether C:\St5 nor C:\St6
echo        Please add the missing directory.
echo.
pause
exit /B

rem Switch from active version 5 to version 6.
:SwitchToST6
ren C:\St St5
ren C:\St6 St
goto StartST

rem Switch from active version 6 to version 5.
:SwitchToST5
ren C:\St St6
ren C:\St5 St

:StartST
start "" /D "C:\St" St.exe

单个批处理文件足以在两个版本的应用程序之间切换。 C:\St包含当前版本6,这意味着只有C:\St5C:\St包含当前版本5,因此还有C:\St6。通过运行两个目录重命名操作,取决于C:\St之外存在的目录,完成版本切换。

但批处理文件在目录重命名完成之前首先检查应用程序的任何正在运行的实例,因为在应用程序当前运行时尝试重命名目录是不合适的。

批处理文件也可用于启动特定版本。

如果批处理文件以5作为参数启动,则它始终启动版本5,并在必要时重新编号,因为版本6当前是活动版本。

如果批处理文件以6作为参数启动,则它始终启动版本6,如果需要,则重命名相应的目录,因为版本5当前是活动版本。

如果以任何其他参数启动或没有参数,批处理文件只需切换活动版本。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • cls /?
  • call /? ...有关%~1的解释(第一个参数没有双引号)。
  • echo /?
  • exit /?
  • find /?
  • goto /?
  • if /?
  • pause /?
  • ren /?
  • start /?
  • tasklist /?

此批处理文件无法存储在C:\StC:\St5C:\St6中。

但它也不应该存储在Windows桌面上。 Windows桌面仅用于包含快捷方式,即* .lnk文件。 Windows桌面由Microsoft实现为文件夹,因此也可以包含其他文件和文件夹。但总的来说,在Windows桌面上安装其他文件甚至文件夹并不是一个好主意,原因有多种,我不想在此列出。

批处理文件可以存储在目录%ProgramFiles%中。但是将批处理文件保存在此目录中需要管理员权限。但是,这个目录对于计算机的任何用户使用的批处理文件来说都是一个很好的位置,并且通常只能通过快捷方式执行。

仅由单个用户使用的批处理文件的好地方是应用程序数据目录。单击Windows资源管理器地址栏上的主(左)鼠标按钮,输入%APPDATA%并按 RETURN ENTER 打开此用户帐户相关文件夹,其中包含当前用户也有写访问权限。 Windows资源管理器自动将此引用扩展为环境变量 APPDATA ,并以完整路径显示此文件夹的名称。

在Windows桌面上创建文件/文件夹的快捷方式非常简单。有几种方法。

一种方法是在Windows桌面上的空闲区域点击辅助(右)鼠标按钮,然后在子菜单新建>中的菜单项快捷方式上点击主要(左)鼠标按钮strong>的上下文菜单。浏览到文件/文件夹(本例中为批处理文件)并输入快捷方式的名称后,将使用默认设置创建快捷方式(* .lnk文件)。

另一种方法是在文件/文件夹本身(本例中为批处理文件)上单击鼠标右键,然后在子菜单中桌面(创建快捷方式)上单击鼠标左键发送在上下文菜单中或菜单项创建快捷方式,以直接在Windows桌面或当前文件夹中创建文件/文件夹的快捷方式,下一步必须从当前文件夹中剪切并粘贴到Windows桌面上。可用的快捷方式创建菜单项取决于Windows的版本,请参阅例如页面Windows Help - Create or delete a shortcut

* .lnk的文件名是快捷方式名称。因此,快捷方式可以像任何其他文件一样重命名,右键单击快捷方式并左键单击上下文菜单中的重命名。一个简短有意义的名称总是有助于快捷方式。

对于在版本5中启动应用程序ST的批处理文件的快捷方式,必须右键单击快捷方式文件并左键单击上一个上下文菜单项属性。将打开一个窗口,其中包含几个要配置的选项。

第一个是目标命令行,如果字符串包含1个或多个空格,则显示批处理文件名,其中完整路径用双引号括起来。在此字符串上,必须在右侧添加空格字符5,以便在稍后单击快捷方式时以5作为参数运行批处理文件。

批处理文件没有输出任何错误。它只是在版本5中启动应用程序。因此,为运行设置最小化窗口运行批处理文件是有意义的。从批处理文件中启动的应用程序ST以普通窗口启动。只使用最小化的控制台窗口处理批处理文件。

批处理文件快捷方式的图标默认为控制台窗口符号。这个快捷方式肯定更好的是点击按钮更改图标,浏览到C:\St\St.exe并选择可执行文件中的第一个图标。 GUI应用程序通常具有1个或多个图标。否则,应用程序的文件夹中通常会有1个甚至更多* .ico文件用于快捷方式。

通过单击按钮确定关闭快捷方式属性窗口后,通过批处理文件启动St.exe版本5的第一个快捷方式已准备就绪。

对于St.exe的第二个快捷方式,通过使用Ctrl + C和Ctrl + V批量文件复制已创建的快捷方式,重命名此副本,打开快捷方式属性,将5替换为{ {1}}在目标命令行上,然后使用按钮确定关闭窗口。

另请参阅文章How to automatically start a program minimized in Windows?以及快捷方式属性窗口的屏幕截图。它取决于Windows的版本,快捷方式属性窗口的外观以及快捷方式类型,但上述主要选项在所有快捷方式属性中都可用。