标题: [文本处理] [已解决]批处理循环中出现的值怎样保存下来给后边使用? [打印本页]
作者: smss 时间: 2019-6-23 21:32 标题: [已解决]批处理循环中出现的值怎样保存下来给后边使用?
本帖最后由 smss 于 2019-6-24 18:43 编辑
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a /s "%1\manifest.xml"') do (set "P=%%~dpi"
- cd/d "!P!..\."
- call set "Pf=%%P:!cd!\=%%"
- echo "!P:~,-1!"复制到"%~dp0!Pf:~,-1!"
- ::xcopy /e /i /y "!P:~,-1!" "%~dp0!Pf:~,-1!"
- echo rmdir /s /q "!P:~,-1!">>"%~dp01.txt"
- echo move "%~dp0!Pf:~,-1!" "!P:~,-1!">>"%~dp02.txt")
- ::中间略过其它脚本1W条 {:3_55:}
- ::"!P:~,-1!"在循环中出现的值保存在1.txt怎样给后边使用
- ::如上我已把要处理前的文件复制另一个文件夹了
- ::需要处理文件之后删除已处理过的文件 再把处理前的原文件移动回来等同于备份
- for /f "delims=" %%a in (%~dp01.txt %~dp02.txt) do (%%a)
- pause
复制代码
感觉不够好 会生成1和2TXT 不知高手都是怎样解决的- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a /s "%1\manifest.xml"') do (set "P=%%~dpi"
- cd/d "!P!..\."
- call set "Pf=%%P:!cd!\=%%"
- xcopy /e /i /y "!P:~,-1!" "%~dp0!Pf:~,-1!"
- echo rmdir /s /q "!P:~,-1!">>"%~dp01.txt"
- echo move "%~dp0!Pf:~,-1!" "!P:~,-1!">>"%~dp02.txt")
- pause
- for /f "delims=" %%a in (%~dp01.txt) do (%%a)
- for /f "delims=" %%a in (%~dp02.txt) do (%%a)
- del "%~dp01.txt" "%~dp02.txt"
- pause
复制代码
作者: miqilaosu 时间: 2019-6-24 10:12
本帖最后由 miqilaosu 于 2019-6-24 14:37 编辑
回复 1# smss - @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a /s "%1\manifest.xml"') do (set "P=%%~dpi"
- cd /d "!P!..\."
- echo."%~dp0"
- call set "Pf=%%P:!cd!\=%%"
- xcopy /e /i /y "!P:~,-1!" "%~dp0!Pf:~,-1!"
- call :sda "!P:~,-1!","%~dp0!Pf:~,-1!"
- )
- pause
- goto :eof
- :sda
- rmdir /s /q "%~1" 1>nul 2>nul
- move "%~2" "%~1" 1>nul 2>nul
复制代码
没测过过,执行文件夹可能有误,自己改吧,传值的大概意思是对的,就是用CALL传值,然后%~1调用 ,%~1就像是个数组一样循环输出
还有一个我想说,你的代码只有PS在C盘的情况下成立,如果在其它的盘可能不成立,不知道你是否注意到- echo off&setlocal enabledelayedexpansion
- for /f "skip=1" %%i in ('wmic logicaldisk get caption') do (
- echo.%%i
- )
- 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)\新建文件夹\”目录里边了- 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
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a /s "E:\Test\1.xml"') do (
- for %%j in ("%%~dpi.") do (
- echo;xcopy /e /i /y "%%~fj" "%~dp0%%~nxj"
- set /a x+=1
- set "_!x!=%%~fj"
- set "#!x!=%%~nxj"
- )
- )
-
- rem 你的其它脚本1W条
-
- for /L %%i in (1 1 !x!) do (
- echo;rmdir /s /q "!_%%i!"
- echo;move "%~dp0!#%%i!" "!_%%i!"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |