如果存在特定字符,则在行中追加

时间:2014-06-08 15:37:23

标签: batch-file

03a01Fa.wav
03a01Nc.wav
03a01Wa.wav

我有这个文本文件

使用批处理文件我想要追加"愤怒"如果大写字母是W,如果字母是F,那么"快乐",N代表"中性"。有可能吗?

我想要这样

03a01Fa.wav,happy
03a01Nc.wav,neutral
03a01Wa.wav,anger

提前致谢,期待解决方案。

4 个答案:

答案 0 :(得分:1)

@echo off
setlocal EnableDelayedExpansion

rem Define the equivalences array
for %%a in ("W=anger" "F=happy" "N=neutral") do (
   for /F "tokens=1,2 delims==" %%b in (%%a) do (
      set "append[%%b]=%%c"
   )
)

for /F %%a in (theFile.txt) do (
   set name=%%a
   for /F %%b in ("!name:~5,1!") do echo %%a,!append[%%b]!
)

您可以在this post的批处理文件中查看阵列管理。

答案 1 :(得分:1)

使用FIND的另一种方式:

@echo off

for /f  "delims=" %%a in (file.txt) do  (
   echo %%a | find "F">nul && echo %%a,happy
   echo %%a | find "N">nul && echo %%a,neutral
   echo %%a | find "W">nul && echo %%a,anger)

如果您需要文件(output.txt)中的输出:

@echo off
for /f  "delims=" %%a in (file.txt) do  (
   echo %%a | find "F">nul && echo %%a,happy
   echo %%a | find "N">nul && echo %%a,neutral
   echo %%a | find "W">nul && echo %%a,anger)>output.txt

答案 2 :(得分:0)

@echo off
setlocal enabledelayedexpansion
(for /f %%i in (t.t) do (
 set a=%%i
 set a=!a:~5,1!
 if !a!==F echo %%i,happy
 if !a!==N echo %%i,neutral
 if !a!==W echo %%i,angry
))>o.t

答案 3 :(得分:0)

@echo off
    setlocal enableextensions disabledelayedexpansion

    (for /f "usebackq" %%a in ( "wavfile.txt" ) do (
        for /f "delims=0123456789abcdefghijklmnopqrstuvwxyz" %%b in ("%%a") do (
            if %%b==W (
                echo %%a,anger
            ) else if %%b==F (
                echo %%a,happy
            ) else if %%b==N (
                echo %%a,neutral
            )
        )
    )) > wavFileOut.txt