好的,我有这个批处理文件,我想检测用户的输入是否包含某个字符,如.
。
这是我到目前为止所拥有的......
IF /I %option%== ATTRIB +h
(我想检测是否有.
被按下了
我希望.bat
能够检测到除了Attrib +h
之外还有其他内容,例如.
,用于文件扩展名。因此,如果有一个文件,我不会再要求文件名,因为它不能正常运行!
以下是Magoo的代码的一部分。
@echo off
title iControl
color 80
:home
cls
echo iControl: Logan Murphy Version 1.5.7
echo Copyright 2014 Logan Murphy. All rights reserved.
GOTO jiki
:jiki
title iHelp
echo.
set /p "SSL=%USERNAME%>Execute>"
echo %SSL%"|find "." >nul
cls
if errorlevel 1 (echo notfound) else (ATTRIB +h)
rem IMPLEMENTED IT HERE!
rem Here we go
rem need to fix execution
IF /I %SSL%==attrib goto attrib
IF /I %SSL%==pause goto pause
IF /I %SSL%==backup goto backup
编辑:好的,来自magoo和john的答案确实有帮助,但是如果我想要检测文件夹名称以及文件名,我会改变什么?
编辑:Ok Magoo,现在测试一下。
编辑:这并没有真正奏效,因为我试图找出变量是否包含某个字符,而不是整个变量是否=有效的文件/文件夹名称,但很好的尝试。会有点麻烦...感谢你的时间Magoo,我很感激:)
编辑:我想我已经解决了!谢谢大家帮助过我! 这是我的新代码...... @echo off
title iControl
color 80
:home
cls
echo iControl: Logan Murphy Version 1.5.7
echo Copyright 2014 Logan Murphy. All rights reserved.
GOTO jiki
:jiki
title iHelp
echo.
set /p "SSL=%USERNAME%>Execute>"
%SSL%
cls
goto Seconds
:Seconds
IF /I %SSL%==attrib goto attrib
IF /I %SSL%==attrib +h goto attrib+-
IF /I %SSL%==attrib -h goto attrib+-
IF /I %SSL%==attrib +r goto attrib+-
IF /I %SSL%==attrib -r goto attrib+-
答案 0 :(得分:0)
通用公式为
echo "%var%"|find "characterorstringrequired" >nul
if errorlevel 1 (echo notfound) else (echo found)
因此,对于您的实例,
echo "%option%"|find "i" >nul
if errorlevel 1 (echo notfound) else (ATTRIB +h)
除此之外,我必须像你的问题一样模糊,我害怕......
看到零件代码......
echo "%SSL%"|find "." >nul
cls
if errorlevel 1 (echo notfound) else (ATTRIB +h)
我不确定cls
是否会影响errorlevel。测试应该在建立errorlevel
的命令后直接执行 - 这是echo %SSL...
行。
echo "%SSL%"|find "." >nul
if errorlevel 1 (echo notfound) else (ATTRIB +h)
如果不理解命令,cmd
可能会造成严重损坏。 attrib
命令需要一个目标,所以它应该是
... else(attrib + h something)
将something
设置为隐藏。
除此之外 - 使用cmd
,attrib
和pause
等backup
个关键字作为标签并不是一个好主意。它可能会在tyop的情况下造成损害。
sying 你想要做什么的好处,而不是你想做什么是什么。
要测试文件是否存在,请尝试
if exist "%SSL%" (echo "%SSL%" exists) else (echo "%SSL%" is not there)
其中echo
可以是任何合法(系列)命令。
答案 1 :(得分:0)
对于所有特殊字符,这样的事情怎么样?
@echo off
:_Start
set /p "FID="
set FID="%FID:"=%"
setlocal EnableDelayedExpansion
for %%I in (^| ^& ^< ^> ^^ ^( ^) ' ` ^%% ^") do set FID=!FID:%%I=!
setlocal DisableDelayedExpansion
set FID="%FID:!=%"
endlocal&set FID=%FID:~1,-1%
:_Back
set _Flag1=
for /f "tokens=1* delims=~=*;,?-+\/.@#${}[]: " %%J in ('echo !FID!') do (
set FID=%%J%%K
set _Flag1=%%J
set _Flag2=%%K
)
if NOT "%_Flag2%"=="" goto :_Back
if NOT defined _Flag1 goto :_Start
endlocal&set FID=%FID%
echo %FID%
pause
答案 2 :(得分:-1)
用于在字符串中查找字符的VBA命令是INSTR,因此如果您正在寻找。例如,然后在VBA中可以使用INSTR。有两种方法可以做你想做的事:
如果您对第二个感兴趣,请查看http://www.dostips.com/forum/viewtopic.php?f=3&t=1986 它不像第一个那样有效,因为INSTR几乎是VBScript中的一个衬里,而批处理版本通过字符比较进行,但是如果你正在寻找一个只能批处理的解决方案想。