【发布时间】:2015-03-25 08:22:51
【问题描述】:
我有一个 .bat,它是一个包含多个选项的大菜单。
每个选项都调用不同的批处理文件,该批处理文件位于同一目录下的子文件夹“/scripts”下。
我通过删除所有目录路径使每个单独的脚本通用。如何发送这些脚本在主菜单脚本中的工作方向?
好的,这里有一些代码。
这是我的 main.bat 的小版本
@echo off
cls
SET "scriptdir=z:\scripts"
SET "workdir=c:\Users\%username%\Desktop\test"
:start
echo Clean And Rename Test V2.0.1
echo.
echo 1. Root Directory Only
echo 2. Root And Subfolders
echo.
echo 3. None, Exit...
echo.
set /p menu0=...1,2,3?
if '%menu0%'=='1' CALL :root.only
if '%menu0%'=='2' CALL :root.only&CALL:root.with.subs
if '%menu0%'=='3' CALL :end2
goto start
:root.only
echo Deleting Junk Files
CALL %scriptdir%\01-test-root-delete-junk.bat %workdir%
echo.
echo Cleaning File Names
CALL %scriptdir%\02-test-root-clean-names.bat %workdir%
echo.
echo Setting Letter Case
CALL %scriptdir%\03-test-root-letter-case.bat %workdir%
echo.
goto :end
:root.with.subs
echo Deleting Junk Files
CALL %scriptdir%\10-test-subs-delete-junk.bat %workdir%
echo.
echo Cleaning File Names
CALL %scriptdir%\11-test-subs-clean-names.bat %workdir%
echo.
echo Setting Letter Case
CALL %scriptdir%\12-test-subs-letter-case-.bat %workdir%
echo.
goto :end
:end
echo Actions Complete
echo.
pause
exit
:end2
exit
这是其中一个脚本。
@ECHO OFF
PUSHD "%~dp0"
setlocal EnableDelayedExpansion
REM Cleanup Dots/Underscores
for %%j in (*.*) do (
set filename=%%~nj
set filename=!filename:.= !
set filename=!filename:_= !
set filename=!filename:[=!
set filename=!filename:]=!
if not "!filename!"=="%%~nj" ren "%%j" "!filename!%%~xj"
)
REM Set All To Lowercase
for %%f in (*.*) do (
set "filename=%%~Nf"
for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
set "filename=!filename:%%a=%%a!"
)
REM Set Very First To Uppercase
set "letter=!filename:~0,1!"
for %%A in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set "letter=!letter:%%A=%%A!"
)
ren "%%f" "!letter!!filename:~1!%%~Xf"
)
REM Setting Title Case
for %%j in (*.*) do (
set filename=%%~nj
set filename=!filename: a= A!
set filename=!filename: b= B!
set filename=!filename: c= C!
set filename=!filename: d= D!
set filename=!filename: e= E!
set filename=!filename: f= F!
set filename=!filename: g= G!
set filename=!filename: h= H!
set filename=!filename: i= I!
set filename=!filename: j= J!
set filename=!filename: k= K!
set filename=!filename: l= L!
set filename=!filename: m= M!
set filename=!filename: n= N!
set filename=!filename: o= O!
set filename=!filename: p= P!
set filename=!filename: q= Q!
set filename=!filename: r= R!
set filename=!filename: s= S!
set filename=!filename: t= T!
set filename=!filename: u= U!
set filename=!filename: v= V!
set filename=!filename: w= W!
set filename=!filename: x= X!
set filename=!filename: y= Y!
set filename=!filename: z= Z!
if not "!filename!"=="%%~nj" ren "%%j" "!filename!%%~xj"
)
popd
基本上我想做的是将所有脚本放在 z:\scripts 中。然后将我的 main.bat 的多个版本放在不同的地方。我将为 main.bat 重命名它的特定任务,我希望 main.bat 调用脚本并告诉它们在哪里工作,如果需要,按顺序进行。
我使用了一个 bat to exe 编译器,这很好,使它工作得很好,也许在完成编辑和构建后的所有工作结束时很有用。
我是新手。我现在这样做的愿望是学习和组织。我想编写一个脚本并知道它可以完美运行并存储它。同时在主文件中进行所有工作以控制事物。这样,如果出现问题,我知道它与主文件有关,而不是在数百行脚本中也可能意外出错。 想法?
【问题讨论】:
-
又尝试了一些方法,但无济于事。只是对这部分有点困惑。
-
我已经评论了我的答案 ;-)
标签: batch-file menu path directory call