Batch file 用文件名替换文件中静态字符串的批处理脚本

Batch file 用文件名替换文件中静态字符串的批处理脚本,batch-file,filenames,text-processing,Batch File,Filenames,Text Processing,我在c:\data\中有3000个文件,我需要用文件名替换每个文件中的静态字符串。例如,在文件12345678.txt中会有一些记录以及字符串9999999,我想用文件名12345678替换9999999 如何使用批处理脚本执行此操作?试试这个 replace_string="99999999" for f in *.txt; do sed -i "s/${replace_string}/${f%.*}/g" "$f"; done 说明: *.txt中f的;做完成:循环浏览当前目录中

我在
c:\data\
中有3000个文件,我需要用文件名替换每个文件中的静态字符串。例如,在文件
12345678.txt
中会有一些记录以及字符串
9999999
,我想用文件名
12345678
替换
9999999

如何使用批处理脚本执行此操作?

试试这个

replace_string="99999999"
for f in *.txt; do
    sed -i "s/${replace_string}/${f%.*}/g" "$f";
done
说明:

  • *.txt中f的
    ;做完成
    :循环浏览当前目录中名为
    *.txt
    的文件
  • sed-i。。。文件
    就地编辑
    文件
    -i
  • “s/pattern/replacement/g”
    将(
    s
    )模式替换为全局替换(
    g
  • ${f%.*}
    不带扩展名的文件名()
    • 试试这个

      replace_string="99999999"
      for f in *.txt; do
          sed -i "s/${replace_string}/${f%.*}/g" "$f";
      done
      
      说明:

      • *.txt中f的
        ;做完成
        :循环浏览当前目录中名为
        *.txt
        的文件
      • sed-i。。。文件
        就地编辑
        文件
        -i
      • “s/pattern/replacement/g”
        将(
        s
        )模式替换为全局替换(
        g
      • ${f%.*}
        不带扩展名的文件名()
      使用GNU工具:

      find . -regex '.*/[0-9]+\.txt' -type f -exec gawk -i inplace '
        BEGINFILE {f = FILENAME; sub(".*/", "", f); sub(/\..*/, "", f)}
        {gsub(/\<99999999\>/, f); print}' {} +
      
      find-regex'.*/[0-9]+\.txt'-type f-exec gawk-i in place'
      BEGINFILE{f=FILENAME;sub(.*/,“”,f);sub(/\..*/,“”,f)}
      {gsub(/\/,f);print}{}+
      
      使用GNU工具:

      find . -regex '.*/[0-9]+\.txt' -type f -exec gawk -i inplace '
        BEGINFILE {f = FILENAME; sub(".*/", "", f); sub(/\..*/, "", f)}
        {gsub(/\<99999999\>/, f); print}' {} +
      
      find-regex'.*/[0-9]+\.txt'-type f-exec gawk-i in place'
      BEGINFILE{f=FILENAME;sub(.*/,“”,f);sub(/\..*/,“”,f)}
      {gsub(/\/,f);print}{}+
      
      GNU
      sed
      将使用
      -i
      标志使编辑“永久”;否则,转换的内容将发送到标准输出。最初不清楚,但问题是在Windows上,解决方案需要是批处理脚本GNU
      sed
      将使用
      -i
      标志使编辑“永久”;否则,转换的内容将发送到标准输出。最初不清楚,但问题在Windows上,解决方案需要是批脚本。最初不清楚,但问题在Windows上,解决方案需要是批脚本。最初不清楚,但问题是在Windows上,解决方案需要是批处理脚本StackOverflow不是免费的代码编写服务,我们希望那些需要帮助的人至少尝试过他们需要帮助的任务。要做到这一点,您应该在问题中提供代码的详细信息、特定问题以及足够的详细信息,以便帮助人员复制问题。当你想提供你的代码时,请突出显示它并按下
      {}
      按钮以正确格式化它。但是,StackOverflow不是免费的代码编写服务,我们希望那些需要帮助的人至少尝试过他们需要帮助的任务。要做到这一点,您应该在问题中提供代码的详细信息、特定问题以及足够的详细信息,以便帮助人员复制问题。当您需要提供代码时,请突出显示该代码,然后按
      {}
      按钮以正确设置其格式。