Board logo

标题: [其他] [已解决]请问批处理set /p=中的变量是哪个? [打印本页]

作者: abcdshenji    时间: 2011-3-16 16:15     标题: [已解决]请问批处理set /p=中的变量是哪个?

set /p=123
那输入的123赋给了哪个变量?

[ 本帖最后由 abcdshenji 于 2011-3-16 20:56 编辑 ]
作者: andyrave    时间: 2011-3-16 16:31

  1. @echo off
  2. set /p w=123
  3. echo %w%
  4. pause
复制代码

作者: CrLf    时间: 2011-3-16 17:05

set /p=123纯粹是显示,不会把输入赋予任何变量,楼主"set"一下就会发现所有变量原封不动
这一般是用来不换行显示的:
  1. @echo off
  2. set /p=123<nul
  3. echo 456
  4. pause
复制代码

作者: wc726842270    时间: 2011-3-16 17:18

SET /P 可以清除回车符或换行符
作者: abcdshenji    时间: 2011-3-16 17:29     标题: 回复 3楼 的帖子

可是你看这个:
  1. @echo off&setlocal EnableDelayedExpansion
  2. set "th=1"&set /p=请输入一个数:
  3. for /l %%i in (1,1,!p!) do (
  4.   set "str=!str!1"
  5. )
  6. rem 也可以加上先判断是否偶数。
  7. for /l %%i in (3,2,!p!) do (
  8.     set "th=!th!11"
  9.     for /f %%j in ("!th!") do (
  10.         if "!str:%%j=!"=="" set "flag=非素"&goto :end
  11.     )
  12. )
  13. :end
  14. if defined flag (
  15.   echo 非素数
  16. ) else (
  17.   echo 素数
  18. )
  19. pause>nul
复制代码
如果纯粹是显示的话。。这句“set /p=请输入一个数:”的作用是什么?它怎么引用输入的变量的值?还有下面的!p!是什么?变量p都还没定义呢,它是怎么引用的?难道说变量是p?如果是的话
  1. set /p=请输入一个数:
  2. echo\&echo %p%
  3. pause>nul
复制代码
结果是ECHO处于关闭状态

搞不懂啊。。。希望大哥指点一下下啊
作者: Hello123World    时间: 2011-3-16 17:35

set /p=hello
我也一直以为是显示,不过看楼上的意思——!p!是哪里来的呢
作者: wc726842270    时间: 2011-3-16 17:36     标题: 回复 5楼 的帖子

你怎么知道这段P是正确的呢?
作者: hanyeguxing    时间: 2011-3-16 18:30     标题: 回复 5楼 的帖子

不知道楼主从哪复制的源代码,但显然语法存在错误:
set "th=1"&set /p=请输入一个数:
应该为
set "th=1"&set /p p=请输入一个数:
作者: abcdshenji    时间: 2011-3-16 18:37     标题: 回复 7楼 的帖子

唉。。真的是错的。。
作者: abcdshenji    时间: 2011-3-16 18:40     标题: 回复 8楼 的帖子

恩。。明白。。验证过了。。就算是改成“set "th=1"&set /p p=请输入一个数:”。。这段P也还是错的。。。。
作者: Hello123World    时间: 2011-3-16 23:59     标题: 回复 7楼 的帖子

搞了半天,原来set /p=hello 还是表示显示而已




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2