本帖最后由 冰剑 于 2017-10-17 16:10 编辑
源文件内容示例:
第一行字符串
第二行字符串
第三行字符串
........
要生成的文件内容新建文本文件abcd.txt
.STRINGS
$str[1] = "第一行字符串"
$str[2] = "第二行字符串"
$str[3] = "第三行字符串"
......
.END- SET /P file=请将需要处理的文件拖入本窗口
- SET /P init=请输入生成数组起始值
- CLS
- set str=.STRINGS
- ECHO %str%>abcd.txt
- SET str1=^$str[
- SET /a str2=%init%
- SET str3=^] = "
- SET str4=^"
- for /f %%i in (%file%) do (
- SET "strall=%str1%%str2%%str3%!%%i!%str4%"
- ECHO !strall!>>abcd.txt
- SET /a str2=%str2%+1
- )
- SET str=.END
- ECHO %str%>>abcd.txt
- ECHO 数据处理完成
- PAUSE
复制代码 望各位大神指点一下哪里出了问题
读取的文件返回的数据都是空的
数组值一直都是输入的起始值
根据一楼和二楼的内容重新整合了一下- setlocal enabledelayedexpansion
- SET /P file=请将需要处理的文件拖入本窗口:
- SET /P init=请输入生成数组起始值:
- CLS
- set str=.STRINGS
- ECHO %str%>logo.st
- SET str1=^$str[
- SET /a str2=%init%
- SET str3=^] = "
- SET str4=^"
- for /f "delims=" %%i in (%file%) do (
- SET "strall=%str1%!str2!%str3%%%i%str4%"
- ECHO !strall!>>logo.st
- SET /a str2=!str2!+1
- )
- SET str=.END
- ECHO %str%>>logo.st
- ECHO 数据处理完成
- PAUSE
复制代码 更简化的写法(二楼的程序)- setlocal enabledelayedexpansion
- SET /P file=请将需要处理的文件拖入本窗口:
- SET /P init=请输入生成数组起始值:
- CLS
- ECHO .STRINGS>logo.st
- for /f "delims=" %%i in (%file%) do echo $str[!init!] = "%%i">>logo.st&set /a init+=1
- ECHO .END>>logo.st
- ECHO 数据处理完成
- PAUSE
复制代码 这个代码对某些特殊符号就没用了,比如带分号的就过滤了.
感谢七楼的 0000 代码,完美解决各种特殊字符的问题- @echo off
- setlocal enabledelayedexpansion
- set /p input=输入文件名:
-
- type "!input!"|find /v /c "">_
- set /p n=<_
- <"!input!" >"abcd.txt" (
- echo .STRINGS
- for /l %%a in (1,1,!n!) do (
- set /p i=
- echo $str[%%a] = "!i!"
- )
- echo .END
-
- )
复制代码 高人啊,哈哈~
最终我改了一下代码- setlocal enabledelayedexpansion
- set /p input=输入文件名:
-
- type "!file!"|find /v /c "">temp.a
- set /p n=<temp.a
- <"!file!" >"abcd.txt" (
- echo .STRINGS
- for /l %%a in (1,1,!n!) do (
- set /p i=
- echo $str[%%a] = "!i!"
- )
- echo .END
- )
- DEL /F temp.a
复制代码 这样就更好理解了. |