Board logo

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

作者: smss    时间: 2019-6-23 21:32     标题: [已解决]批处理循环中出现的值怎样保存下来给后边使用?

本帖最后由 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 10:12

本帖最后由 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
复制代码
这个是做参考用的,可以看下
作者: smss    时间: 2019-6-24 12:53

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

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

本帖最后由 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"
复制代码
不过可能是我本地文件不全,就循环了两次,提示没找到文件,你改完的代码发过来看下,如果可以的话,可以把文件打包上来一起测试下
作者: WHY    时间: 2019-6-24 16:42

  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
复制代码





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