标题: [文件操作] [已解决] 批处理内嵌if出现语法错误 [打印本页]
作者: pZjVa0 时间: 2013-7-1 12:31 标题: [已解决] 批处理内嵌if出现语法错误
本帖最后由 pZjVa0 于 2013-7-1 22:25 编辑
每次遇到这种内嵌的if语句总会遇到各种语法错误,查了一下后发现转义符^可以解决这个问题,下面代码尝试多次后依然会出现 “此时不应该有do”
希望各位能给出正确的代码写法,谢谢- if intro.txt==1 (
- for %%I in ("intro.txt") do set var=%%~aI
- if "%var:r=%" neq "%var%" (echo intro.txt 已添加已读属性) else (set intro.txt=0& call :TEMP)
- )
复制代码
作者: terse 时间: 2013-7-1 12:48
intro.txt for 这里要空格
作者: pZjVa0 时间: 2013-7-1 12:51
回复 2# terse
代码已修正。但还是会命令错误
作者: Python 时间: 2013-7-1 13:00
- setlocal enabledelayedexpansion
-
- if !intro.txt!==1 (
- if exist intro.txt (
- for %%I in ("intro.txt") do (
- set var=%%~aI
- )
- )
- if "!var:r=!" neq "!var!" (
- echo intro.txt 已添加已读属性
- ) else (
- set intro.txt=0
- call :TEMP
- )
- )
复制代码
作者: pZjVa0 时间: 2013-7-1 14:28
回复 4# Python
冒昧的问一下,有办法可以不使用变量延迟吗?
作者: terse 时间: 2013-7-1 15:20
试试这样?- if "%intro.txt%" == "1" (
- if exist intro.txt (
- for %%I in ("intro.txt") do (
- for /f "delims=-" %%i in ("%%~aI") do (
- if /i "%%i" == "r" (
- echo intro.txt 已添加已读属性
- ) else (
- set intro.txt=0
- call :TEMP
- )
- )
- )
- )
- )
- pause
复制代码
作者: pZjVa0 时间: 2013-7-1 16:06
回复 6# terse
其实没有if exist intro.txt (这一句...前面加错了...原本的代码是这样..- if intro.txt==1 (
- for %%I in ("intro.txt") do set var=%%~aI
- if "%var:r=%" neq "%var%" (echo intro.txt 已添加已读属性) else (set intro.txt=0& call :TEMP)
- )
复制代码
作者: pZjVa0 时间: 2013-7-1 16:08
回复 6# terse
然后我试了一下你给出的那段代码删除了其中的if exist intro.txt (和后面的)后发现显示不出echo的内容耶..
作者: Python 时间: 2013-7-1 16:23
回复 7# pZjVa0
if intro.txt==1 (
这个条件永远不会成立
因为字符串intro.txt永远不等于1
作者: pZjVa0 时间: 2013-7-1 16:26
回复 9# Python 复制代码
这个是因为前面有自定义了属性给 intro.txt
作者: CrLf 时间: 2013-7-1 17:57
回复 10# pZjVa0
但你引用的是变量名,不是变量值
作者: terse 时间: 2013-7-1 18:18
本帖最后由 terse 于 2013-7-2 12:34 编辑
回复 7# pZjVa0
if exist intro.txt 的判断 有和没 不影响代码的执行 你的关键的想判断文件属性
话说 变量延迟 有什么不妥吗
原来没把其他属性作分割 修正了- if "%intro.txt%" == "1" (
- for %%I in ("intro.txt") do for /f "delims=ash-" %%i in ("%%~aI") do (
- if /i "%%i" == "r" (echo intro.txt 已添加已读属性) else (set intro.txt=0& call :TEMP)
- )
- )
复制代码
作者: pZjVa0 时间: 2013-7-1 19:51
回复 12# terse
不是这个意思呢,我测试了一下代码执行结果不正确,已经无法文件属性了
作者: terse 时间: 2013-7-1 20:01
回复 13# pZjVa0
检查路径呢
作者: apang 时间: 2013-7-1 20:53
- if "%intro.txt%" == "1" (
- for %%I in ("intro.txt") do (
- for /f "tokens=1*delims=rR" %%J in ("-%%~aI-") do (
- if not "%%K"=="" (
- echo intro.txt 已添加已读属性
- ) else (
- set intro.txt=0& call :TEMP
- )
- )
- )
- )
复制代码
用call 或 goto,嘿嘿呵呵- if "%intro.txt%" == "1" (goto :Main) else exit
- :Main
- for %%I in ("intro.txt") do set var=%%~aI
- if "%var:r=%" neq "%var%" (echo intro.txt 已添加已读属性
- ) else set intro.txt=0& call :TEMP
复制代码
作者: pZjVa0 时间: 2013-7-1 22:24
回复 15# apang
感谢。代码测试成功,简洁。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |