通过在文本文件中为特定类型的字符串添加前缀,同时保留其余字符串,编辑文本文件

时间:2015-08-06 19:21:40

标签: string batch-file

我有一个包含纯字母和数字字符串的文本文件。 我的目的是为每个数字字符串添加前缀0,当且仅当它们以9开头并保留原始文件中的其余字符串以创建修改后的文件。 Foreg:

original file           modified file
  1 watsongone        4   watsongone
  2**978654321**      5  **0978654321**
  3  087654567        6  087654567     

                                  I was trying to solve this using windows batch file. Wondering why the following doesn't work :

     setlocal enabledelayedexpansion
    for /f "tokens=*" %%A in (ns.txt) do ( if /I %%A EQU "9"  CALL:Sub %%A
                              echo %%A >>z.txt )
    goto:eof
    :Sub
    set B=0%1
    echo !B! >>z.txt
    goto:eof  

2 个答案:

答案 0 :(得分:0)

它是%%A无法正常工作的部分 - 它确实有效,但不像您似乎想的那样。

我们假设,987654321if /i 987654321 equ "9" 。那么您的比较是:

for /f "tokens=*" %%A in (ns.txt) do CALL:Sub %%A
goto:eof

:Sub
set A=%1
REM next line: compare first letter of %A% :
if "%A:~0,1%"=="9" (set B=0%1) else set B=%1
echo %B% >>z.txt
goto:eof  

显然不是。

我会把比较推到你的子功能中:

pygame.init()
display = (800,600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
myTex = pygame.image.load('0.png')
myTex = myTex.convert_alpha()
myTexData = pygame.image.tostring(myTex, 'RGBA', 1)
myTexID = 0
glGenTextures(1, myTexID)
glBindTexture(GL_TEXTURE_2D, myTexID)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, myTex.get_width(), myTex.get_height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, myTexData)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)

(你不需要延迟扩展)

这不是最好的方法,但很容易理解。

答案 1 :(得分:0)

男人啊!上帝知道有多少人自杀试图找出使该死的计算机理解你想要的语法。我设法解决了我的问题并获得了新的见解。

 setlocal enabledelayedexpansion

    for /f "tokens=*" %%A in (ns.txt) do ( set C=%%A
    If /I "!C:~0,1!" equ "9" (echo 0!C! >>j.txt)  else (echo !C! >>j.txt)

      )
   goto:eof

当你在表达式中使用负数时,祝福比较操作“equ”是问题,即“NOT”你使用“==”否则你必须使用“equ”或者你的处理器发疯并反过来驱使你在墙上