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

[文本处理] [已解决]批处理循环中出现的值怎样保存下来给后边使用?

本帖最后由 smss 于 2019-6-24 18:43 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b /a /s "%1\manifest.xml"') do (set "P=%%~dpi"
  3. cd/d "!P!..\."
  4. call set "Pf=%%P:!cd!\=%%"
  5. echo "!P:~,-1!"复制到"%~dp0!Pf:~,-1!"
  6. ::xcopy /e /i /y "!P:~,-1!" "%~dp0!Pf:~,-1!"
  7. echo rmdir /s /q  "!P:~,-1!">>"%~dp01.txt"
  8. echo move  "%~dp0!Pf:~,-1!" "!P:~,-1!">>"%~dp02.txt")
  9. ::中间略过其它脚本1W条 {:3_55:}
  10. ::"!P:~,-1!"在循环中出现的值保存在1.txt怎样给后边使用
  11. ::如上我已把要处理前的文件复制另一个文件夹了
  12. ::需要处理文件之后删除已处理过的文件 再把处理前的原文件移动回来等同于备份
  13. for /f "delims=" %%a in (%~dp01.txt %~dp02.txt) do (%%a)
  14. pause
复制代码
感觉不够好 会生成1和2TXT  不知高手都是怎样解决的
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b /a /s "%1\manifest.xml"') do (set "P=%%~dpi"
  3. cd/d "!P!..\."
  4. call set "Pf=%%P:!cd!\=%%"
  5. xcopy /e /i /y "!P:~,-1!" "%~dp0!Pf:~,-1!"
  6. echo rmdir /s /q  "!P:~,-1!">>"%~dp01.txt"
  7. echo move  "%~dp0!Pf:~,-1!" "!P:~,-1!">>"%~dp02.txt")
  8. pause
  9. for /f "delims=" %%a in (%~dp01.txt) do (%%a)
  10. for /f "delims=" %%a in (%~dp02.txt) do (%%a)
  11. del "%~dp01.txt" "%~dp02.txt"
  12. pause
复制代码

本帖最后由 miqilaosu 于 2019-6-24 14:37 编辑

回复 1# smss
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b /a /s "%1\manifest.xml"') do (set "P=%%~dpi"
  3. cd /d "!P!..\."
  4. echo."%~dp0"
  5. call set "Pf=%%P:!cd!\=%%"
  6. xcopy /e /i /y "!P:~,-1!" "%~dp0!Pf:~,-1!"
  7. call :sda "!P:~,-1!","%~dp0!Pf:~,-1!"
  8. )
  9. pause
  10. goto :eof
  11. :sda
  12. rmdir /s /q  "%~1" 1>nul 2>nul
  13. move  "%~2" "%~1" 1>nul 2>nul
复制代码
没测过过,执行文件夹可能有误,自己改吧,传值的大概意思是对的,就是用CALL传值,然后%~1调用   ,%~1就像是个数组一样循环输出
还有一个我想说,你的代码只有PS在C盘的情况下成立,如果在其它的盘可能不成立,不知道你是否注意到
  1. echo off&setlocal enabledelayedexpansion
  2. for /f "skip=1" %%i in ('wmic logicaldisk get caption') do (
  3. echo.%%i
  4. )
  5. pause
复制代码
这个是做参考用的,可以看下

TOP

本帖最后由 smss 于 2019-6-24 12:56 编辑

回复 2# miqilaosu
我怎么看不懂 测试下没有效果
我想把循环中的路径保存下来
给后边的命令使用 我才试试 貌似还在在循环之中

TOP

本帖最后由 miqilaosu 于 2019-6-24 13:23 编辑

回复 3# smss


    不应该啊,我保存为BAT后运行得到的结果,我BAT是保存在“C:\Users\Administrator\Desktop\新建文件夹 (2)\新建文件夹\”目录里边了
  1. C:\Users\Administrator\Desktop\Photoshop CC 2018 WIN64\App\Ps\Required\CEP\extensions\com.adobe.KulerPanel.html>move  "C:\Users\Administrator\Desktop\新建文件夹 (2)\新建文件夹\CSXS" "C:\Users\Administrator\Desktop\Photoshop CC 2018 WIN64\App\Ps\Required\CEP\extensions\com.adobe.KulerPanel.html\CSXS"
复制代码
不过可能是我本地文件不全,就循环了两次,提示没找到文件,你改完的代码发过来看下,如果可以的话,可以把文件打包上来一起测试下

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a /s "E:\Test\1.xml"') do (
  4.     for %%j in ("%%~dpi.") do (
  5.         echo;xcopy /e /i /y "%%~fj" "%~dp0%%~nxj"
  6.         set /a x+=1
  7.         set "_!x!=%%~fj"
  8.         set "#!x!=%%~nxj"
  9.     )
  10. )
  11. rem 你的其它脚本1W条
  12. for /L %%i in (1 1 !x!) do (
  13.     echo;rmdir /s /q "!_%%i!"
  14.     echo;move "%~dp0!#%%i!" "!_%%i!"
  15. )
  16. pause
复制代码
1

评分人数

    • smss: 哈哈哈 就几条而已技术 + 1

TOP

返回列表