永发信息网

批处理变量变量延迟引用用命令查找到的文件的路径

答案:2  悬赏:10  手机版
解决时间 2021-12-25 12:42
  • 提问者网友:杀手的诗
  • 2021-12-24 17:14
@echo off
setlocal EnableDelayedExpansion
set /p tempvar=输入:
if "!tempvar!"=="3" (set /p tempvar=*) else echo 不等于3
echo !tempvar!
pause

以上代码,当我输入“3”时,为什么不显示“*”呢,我想要的结果是:当输入的字符等于指定的字符时,把变量重新赋值为“*”,然后再另处引用变量的新值“*”,请问要怎样写代码?
第二个问题是当我用dir命令查找到一个文件时,怎样用批处理把这个被查找到的文件移到另一个盘符去?

要怎样配合For /f 和 move啊,请教!!!
最佳答案
  • 五星知识达人网友:鱼忧
  • 2022-01-06 06:04
直接赋值是 set
set /p 是用户变量的值


@echo off& mode con cols=70 lines=10& color 17& setlocal enabledelayedexpansion
set /p tempvar=输入:& cls
if "%tempvar%"=="3" (set tempvar=*) else echo 不等于3
echo %tempvar%
pause 1>nul






for /f "delims=" %%1 in ('dir /s /b 文件名')do move "%%~1" "D:\"
全部回答
  • 1楼网友:woshuo
  • 2022-01-06 06:39
set "var=!var:%strma%=%ta%!"改成 call set "var=%%var:!strma!=!ta!%%" set "var1=!var1:%ma%=%da%!"改成 call set "var1=%%var1:!ma!=!da!%%" 因为你的strma,ma,da这三个变量都在for中循环,开启环境变量延迟后,因此它们也需要用双感叹号,但var和var1两个变量也在for中循环,它们肯定也需要双感叹号,但那种替换的代码不可以双感叹号的变量里面再出现双感叹号的变量,因此只能通过call的方式转换一下。 由于我没有你的那些实际文件内容,所以没法测试,你自己尝试一下看看准不准确?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯