我正在尝试学习更多关于批处理脚本的知识,并且我在谷歌上搜索了这个问题,而没有真正理解我所读的内容。
所以我有下面的批处理脚本来创建多个文件夹。批处理脚本在文件夹名中创建具有当前日期的文件夹。它还提示用户输入文件夹名。唯一不能正确处理的是如何在文件夹名中有空格。如果我调用文件夹(例如我的文档),什么都不会发生(批处理将无法工作)。
那么,如何使这个批处理能够接受文件名中的空格呢?
:: DATE SETTINGS
@ECHO off
SETLOCAL ENABLEEXTENSIONS
if "%date%A" LSS "A" (set toks=1-3) else (set toks=2-4)
for /f "tokens=2-4 delims=(-)" %%a in ('echo:^|date') do (
for /f "tokens=%toks% delims=.-/ " %%i in ('date/t') do (
set '%%a'=%%i
set '%%b'=%%j
set '%%c'=%%k))
if %'yy'% LSS 100 set 'yy'=20%'yy'%
set Today=%'yy'%-%'mm'%-%'dd'%
ENDLOCAL & SET v_year=%'yy'%& SET v_month=%'mm'%& SET v_day=%'dd'%
:: ECHO Today is Year: [%V_Year%] Month: [%V_Month%] Day: [%V_Day%]
::------------------------------------------------------------------------------------------------
::AskForFolderName
set /p NewFolder=Enter folder name here:
If [%NewFolder%]==[] Goto AskForFolderName
If Exist "%NewFolder%" (
Echo Folder already exists
Echo.
Goto AskForFolderName
)
::------------------------------------------------------------------------------------------------
MD "%V_Year%.%V_Month%.%V_Day% - %NewFolder%\IMAGES\RAW IMAGES"
MD "%V_Year%.%V_Month%.%V_Day% - %NewFolder%\IMAGES\EXPORTS\JPG"
MD "%V_Year%.%V_Month%.%V_Day% - %NewFolder%\IMAGES\EXPORTS\PNG"
MD "%V_Year%.%V_Month%.%V_Day% - %NewFolder%\IMAGES\EXPORTS\PSD"
MD "%V_Year%.%V_Month%.%V_Day% - %NewFolder%\VIDEO\RAW VIDEO"
MD "%V_Year%.%V_Month%.%V_Day% - %NewFolder%\VIDEO\EDITS"
MD "%V_Year%.%V_Month%.%V_Day% - %NewFolder%\VIDEO\EXPORTS"发布于 2016-02-03 21:37:58
If [%NewFolder%]==[] Goto AskForFolderName让我们拆解这一行,假设%newfolder%是My Documents
If [My Documents]==[] Goto AskForFolderNameif语法是if argument1 comparison argument2 command
argument1是[My,比较是Documents],等等。什么!?语法错误!
处理空格的批处理方式是将字符串封装在qoutes中:
If "%NewFolder%"=="" Goto AskForFolderNameargument1是"My Documents",比较是==,argument2是"",命令是Goto ... -语法ok.
(有趣的细节:在下一行(if exist ...)中,您正确地使用了引用的字符串)
https://stackoverflow.com/questions/35187112
复制相似问题