batch-file - 各种 CMD 命令的问题
问题描述
我是 Ninjight,我是写这篇文章的同一个人: 通过命令行提示使用 iexpress 创建一个自解压 .exe 文件? 这一次,我在尝试批量扩展时遇到了问题,所以,我只是为了测试而做的,但是……它似乎不起作用,我只是得到“错误的语法”。我不擅长解释,所以我会这样结束这篇文章:“有人可以修复我的脚本并告诉我出了什么问题吗?拜托?”
@echo off
title ex
setlocal
if /i [%~1] == [/?] (
For %%t in (
"This is the command shell for Omega Kernel."
"Please credit if used elsewhere."
"commands:"
""
" /g GOTO"
" The g command essentially works as CD in CMD."
""
" /d delete directory"
" The d command is none other than rd/rmdir in cmd."
""
" /mk MAKE (Directory)"
" mk is just a replacement of mkdir/md."
""
" /mv MOVE"
" mv Moves something somewhere. that's all folks."
""
" /c COPY"
" cp copies something somewhere, letting you add variables"
""
" /va EXPORT FROM VIRTUAL ARCHIVE"
" va exports files from the virtual archive of the server."
" how does it work? It downloads the virtual archive, unzips it, copies the file and then deletes the archive."
""
" /win Opens CMD."
""
" /update downloads updated tools."
""
""
""
"Developed by DaviAwesome, 2012"
""
"2018 -Ninjight_"
) do Echo;%%~t
exit /b
)
if /i [%~1] == [/g] (
set /p input=Where to go?
cd %input%
exit /b
)
::delete folder
if /i [%~1] == [/d] (
set /p rminput=What to remove?
rd %rminput%
exit /b
)
::make folder
if /i [%~1] == [/mk] (
set /p mkinput=Where?
md %mkinput%
exit /b
)
::move
if /i [%~1] == [/mv] (
set /p mvinput=What to move?
set /p mvinput2=Where to?
move %mvinput% %mvinput2%
exit /b
)
::copy.
if /i [%~1] == [/c] (
set /p copyinput0=Copy with?
set /p copyinput=What to copy?
set /p copyinput2=Where to?
set /p copyinput3=Variables?
::if %copyinput0% == xc (
::xcopy %copyinput% %copyinput2% %copyinput3%
::)
::if %copyinput0% == robo (
:: robocopy %copyinput% %copyinput2% %copyinput3%
::)
::if %copyinput0% == robo (
:: copy %copyinput% %copyinput2% %copyinput3%
::)
if %copyinput0% == xc goto xc
if %copyinput0% == c goto c
if %copyinput0% == robo goto robo
exit /b
)
:xc
xcopy %copyinput% %copyinput2% %copyinput3%
exit /b
)
:c
copy %copyinput% %copyinput2% %copyinput3%
exit /b
)
:robo
robocopy %copyinput% %copyinput2% %copyinput3%
exit /b
)
::virtual archive
if /i [%~1] == [/va] (
set /p archinput=What to export?
set /p archinput2=Where to?
download http://link.suffix/file.extension file.extension
move file.extension .\folder\
exit /b
)
::open cmd
if /i [%~1] == [/win] (
cmd
exit /b
)
::update command replaces the old and outdated UP.bat
if /i [%~1] == [/update] (
download http://link.suffix/file.extension file.extension
move file.extension .\tools\folder
exit /b
)
解决方案
@echo off
title ex
setlocal
if not "%~1" == "/?" goto :endif
for %%t in (
"This is the command shell for Omega Kernel."
"Please credit if used elsewhere."
"commands:"
""
" /g GOTO"
" The g command essentially works as CD in CMD."
""
" /d delete directory"
" The d command is none other than rd/rmdir in cmd."
""
" /mk MAKE (Directory)"
" mk is just a replacement of mkdir/md."
""
" /mv MOVE"
" mv Moves something somewhere. that's all folks."
""
" /c COPY"
" cp copies something somewhere, letting you add variables"
""
" /va EXPORT FROM VIRTUAL ARCHIVE"
" va exports files from the virtual archive of the server."
" how does it work? It downloads the virtual archive, unzips it, copies the file and then deletes the archive."
""
" /win Opens CMD."
""
" /update downloads updated tools."
""
""
""
"Developed by DaviAwesome, 2012"
""
"2018 -Ninjight_"
) do echo;%%~t
exit /b
:endif
if /i not "%~1" == "/g" goto :endif
set /p "input=Where to go? "
cd /d %input%
exit /b
:endif
::delete folder
if /i not "%~1" == "/d" goto :endif
set /p "rminput=What to remove? "
rd %rminput%
exit /b
:endif
::make folder
if /i not "%~1" == "/mk" goto :endif
set /p "mkinput=Where? "
md %mkinput%
exit /b
:endif
::move
if /i not "%~1" == "/mv" goto :endif
set /p "mvinput=What to move? "
set /p "mvinput2=Where to? "
move %mvinput% %mvinput2%
exit /b
:endif
::copy.
if /i not "%~1" == "/c" goto :endif
set /p "copyinput0=Copy with? "
set /p "copyinput=What to copy? "
set /p "copyinput2=Where to? "
set /p "copyinput3=Variables? "
if "%copyinput0%" == "xc" (
xcopy %copyinput% %copyinput2% %copyinput3%
)
if "%copyinput0%" == "robo" (
robocopy %copyinput% %copyinput2% %copyinput3%
)
if "%copyinput0%" == "c" (
copy %copyinput% %copyinput2% %copyinput3%
)
exit /b
:endif
::virtual archive
if /i not "%~1" == "/va" goto :endif
set /p "archinput=What to export? "
set /p "archinput2=Where to? "
download http://link.suffix/file.extension file.extension
move file.extension .\folder\
exit /b
:endif
::open cmd
if /i not "%~1" == "/win" goto :endif
cmd
exit /b
:endif
::update command replaces the old and outdated UP.bat
if /i not "%~1" == "/update" goto :endif
download http://link.suffix/file.extension file.extension
move file.extension .\tools\folder
exit /b
:endif
外壳[]
更改为""
.
双引号可能需要它的一些字符串和变量。
否定许多if
比较,以便使用goto :endif
而不是使用括号。这允许%variables%
在不需要延迟扩展的情况下进行扩展,因为括号中没有括起来。
删除了过时的标签:xe
,:c
并且:robo
现在正在使用禁用的代码。
推荐阅读
- ios - 在IOS中使用struct decodable swift 4/5解码不同数据类型的json数组数据
- laravel - 验证似乎不适用于我的 laravel 项目
- javascript - 从对象中的条目动态生成 Gulp 4 任务
- javascript - 在 Angular 8 中保存安全信息的最佳位置
- c# - Blazor.net 不需要的按钮单击输入按键
- java - 使用 Robolectric 对 Toast 消息内容进行单元测试
- angular - 当 Ionic 3 中的 Firestore 集合发生更改时,如何实现应用程序范围的通知功能?
- google-apps-script - 无法使用 google-apps-script 获取 json 数据
- sql-server - 我如何在数字 0.00 中执行 SQL Server 数据类型货币
- angular - Angular 8 Reactive Form 动态编辑/添加模式验证