[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】批处理 拖动文件到窗口 后续执行错误...求解

本帖最后由 comicguests 于 2014-2-12 06:44 编辑
  1. @rem ----- ExeScript Options Begin -----
  2. @rem ScriptType: console,invoker
  3. @rem DestDirectory: temp
  4. @rem ----- ExeScript Options End -----
  5. @echo off
  6. :lab1
  7. cls
  8. color 2f
  9. echo.
  10. echo 【 更改文件(文件夹)属性】
  11. echo -------------------------------
  12. echo.
  13. echo.
  14. echo.
  15. echo.
  16. echo.
  17. set Choice=
  18. echo 请将要更改的文件(文件夹)直接拖入本窗口,然后回车:
  19. echo.
  20. set /p Doc=
  21. if ""%Doc%"" == "" goto lab1
  22. echo a..........(+)只读文件属性
  23. echo b..........(+)存档文件属性
  24. echo c..........(+)系统文件属性
  25. echo d..........(+)隐藏文件属性
  26. echo e..........(-)只读文件属性
  27. echo f..........(-)存档文件属性
  28. echo g..........(-)系统文件属性
  29. echo h..........(-)隐藏文件属性
  30. echo.
  31. set /p CHS=     请输入您的选择:
  32. echo.
  33. if "%CHS%"=="a" goto addR
  34. if "%CHS%"=="b" goto addA
  35. if "%CHS%"=="c" goto addS
  36. if "%CHS%"=="d" goto addH
  37. if "%CHS%"=="e" goto subR
  38. if "%CHS%"=="f" goto subA
  39. if "%CHS%"=="g" goto subS
  40. if "%CHS%"=="h" goto subH
  41. goto lab1
  42. :addR
  43. attrib ""%Doc%"" +r
  44. :addA
  45. attrib ""%Doc%"" +a
  46. :addS
  47. attrib ""%Doc%"" +s
  48. :addH
  49. attrib ""%Doc%"" +h
  50. :subR
  51. attrib ""%Doc%"" -r
  52. :subA
  53. attrib ""%Doc%"" -a
  54. :subS
  55. attrib ""%Doc%"" -s
  56. :subH
  57. attrib ""%Doc%"" -h
  58. exit
复制代码
不知道哪里出错了,希望各位指教
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 12# ivor


这样不太严谨把,比如可以输入非法的选项 az

TOP

回复 11# DAIC


    兼容性好,不管你输入多少种组合,只要包含a,b,c,d,e,f,h都会执行对应的子程序(标签),
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 9# ivor


    判断语句改成这样有什么好处吗?

TOP

回复 9# ivor


    感谢,学习了!

TOP

本帖最后由 ivor 于 2014-2-12 11:58 编辑

每个标签后面没有goto :EOF或者 goto :lab1


判断语句建议用
  1. echo %CHS% | find "a" && goto addR
复制代码
按照这个格式后面的自己改

if "%CHS%"=="a" goto addR
if "%CHS%"=="b" goto addA
if "%CHS%"=="c" goto addS
if "%CHS%"=="d" goto addH
if "%CHS%"=="e" goto subR
if "%CHS%"=="f" goto subA
if "%CHS%"=="g" goto subS
if "%CHS%"=="h" goto subH
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 6# battab


    感谢提示,已改!!

TOP

本帖最后由 comicguests 于 2014-2-12 04:17 编辑

回复 5# DAIC


    确定没加任何额外属性,是新建的文件夹,测试用...

而且问题知道出在哪了...批处理的描述对应错了,但不会失败,问题出在我用的资源管理器上,我用的是Total Commander,对虚拟桌面处理的不太好,才导致的问题,使用真实路径就没问题了...真是十分抱歉!!!


抱歉再问一下,怎样多选?,比如按下ad,就会加上两种属性?

TOP

回复 1# comicguests


    第42行“goto set” 却没发现有:set 标签在哪。
学习中

TOP

回复 4# comicguests


微软的官方文档说的很清楚:
如果文件设置了系统或隐藏属性,则为了更改该文件的其他属性,您必须首先清除其系统或隐藏属性。

TOP

回复 2# DAIC


显示    未重置系统文件   怎么办?

TOP

回复 2# DAIC
  1. c:\>color 2f
  2. c:\>echo.
  3. c:\>echo                【 更改文件(文件夹)属性】
  4.                 【 更改文件(文件夹)属性】
  5. c:\>echo                 -------------------------------
  6.                  -------------------------------
  7. c:\>echo.
  8. c:\>echo.
  9. c:\>echo.
  10. c:\>echo.
  11. c:\>echo.
  12. c:\>set Choice=
  13. c:\>echo        请将要更改的文件(文件夹)直接拖入本窗口,然后回车:
  14.         请将要更改的文件(文件夹)直接拖入本窗口,然后回车:
  15. c:\>echo.
  16. c:\>set /p Doc=
  17. C:\Users\c\Desktop\test
  18. c:\>if ""C:\Users\c\Desktop\test"" == "" goto lab1
  19. c:\>echo        a..........(+)系统文件属性
  20.         a..........(+)系统文件属性
  21. c:\>echo        b..........(+)隐藏文件属性
  22.         b..........(+)隐藏文件属性
  23. c:\>echo        c..........(+)存档文件属性
  24.         c..........(+)存档文件属性
  25. c:\>echo        d..........(+)只读文件属性
  26.         d..........(+)只读文件属性
  27. c:\>echo        e..........(-)系统文件属性
  28.         e..........(-)系统文件属性
  29. c:\>echo        f..........(-)隐藏文件属性
  30.         f..........(-)隐藏文件属性
  31. c:\>echo        g..........(-)存档文件属性
  32.         g..........(-)存档文件属性
  33. c:\>echo        h..........(-)只读文件属性
  34.         h..........(-)只读文件属性
  35. c:\>echo.
  36. c:\>set /p CHS=     请输入您的选择:
  37. 请输入您的选择:b
  38. c:\>echo.
  39. c:\>if "b" == "a" goto addR
  40. c:\>if "b" == "b" goto addA
  41. c:\>attrib ""C:\Users\c\Desktop\test"" +a
  42. c:\>attrib ""C:\Users\c\Desktop\test"" +s
  43. c:\>attrib ""C:\Users\c\Desktop\test"" +h
  44. 未重置系统文件 - C:\Users\c\Desktop\test
  45. c:\>attrib ""C:\Users\c\Desktop\test"" -r
  46. 未重置系统文件 - C:\Users\c\Desktop\test
  47. c:\>attrib ""C:\Users\c\Desktop\test"" -a
  48. 未重置系统文件 - C:\Users\c\Desktop\test
  49. c:\>attrib ""C:\Users\c\Desktop\test"" -s
  50. c:\>attrib ""C:\Users\c\Desktop\test"" -h
  51. c:\>pause
  52. 请按任意键继续. . .
复制代码

TOP

把 @echo off 删掉
把报错信息发出来看看

TOP

返回列表