标题: [文本处理] [已解决]批处理创建文本并输入命令? [打印本页]
作者: a574045075 时间: 2020-11-24 16:11 标题: [已解决]批处理创建文本并输入命令?
我原本想写一个命令来处理一些app文件,但是app文件太多了一个个写太费劲而且容易出错,先用其中3个app文件作为示例说一下,例如文件夹里面有0000001d.app 0000006b.app 00000066.app文件(所有文件名都是000000**.app之类的,**为16进制),想用批处理在此文件夹创建一个run.txt文本并写入-i 0000006b.app:0:107 -i 0000001d.app:1:29 -i 00000066.app:2:102
说一下里面的:0:107 :1:29和:2:102,前面的数字0 1 2是位置序号 就像0 1 2 3 4 5……以此类推,107是0000006b的10进制,29是0000001d的10进制,102是00000066的10进制这样.
最后把makerom.exe -f cia -o DLC1.cia -major 0 -minor 0 -major 0 命令写入文本最前面.
作者: WHY 时间: 2020-11-24 16:48
本帖最后由 WHY 于 2020-11-24 16:49 编辑
- @echo off
- setlocal enabledelayedexpansion
- set m=-1
- for /f "delims=" %%i in ('dir /b *.app | findstr /i "^000000[0-9a-f][0-9a-f]\.app$"') do (
- set /a m+=1, n=0x%%~ni
- set "s=!s! -i %%i:!m!:!n!"
- )
- echo;makerom.exe -f cia -o DLC1.cia -major 0 -minor 0 -major 0!s!>run.txt
复制代码
作者: a574045075 时间: 2020-11-24 16:57
WHY 发表于 2020-11-24 16:48
没有生成run.txt
作者: ivor 时间: 2020-11-24 17:02
本帖最后由 ivor 于 2020-11-24 18:40 编辑
- #&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit
- $num=0;'makerom.exe -f cia -o DLC1.cia -major 0 -minor 0 -major 0' + ((dir *.app|%{' -i {0}:{1}:{2}' -f $_.Name,$num++,[System.Convert]::ToString('0x'+$_.BaseName,'10')}) -join ' ') | tee run.txt
复制代码
作者: a574045075 时间: 2020-11-24 17:06
ivor 发表于 2020-11-24 17:02
不行 提示:
只允许将表达式作为管道的第一个元素。
所在位置 行:1 字符: 85
作者: flashercs 时间: 2020-11-24 17:06
- @echo off
- setlocal EnableDelayedExpansion
- cd /d "%~dp0"
- set out="run.txt"
- REM cmdline
- <nul >%out% set /p s=makerom.exe -f cia -o DLC1.cia -major 0 -minor 0 -major 0
- REM args: -i 0000006b.app:0:107
- set ctr=0
- (
- for %%A in (000000??.app) do (
- set /a hex=0x%%~nA
- <nul set /p s=-i %%A:!ctr!:!hex!
- set /a ctr+=1
- )
- )>>%out%
- endlocal
- pause
- exit /b
复制代码
作者: a574045075 时间: 2020-11-24 17:11
flashercs 发表于 2020-11-24 17:06
这个可以了
作者: ivor 时间: 2020-11-24 18:41
回复 5# a574045075
已修复
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |