windows – 使用批处理文件插入字符串
发布时间:2020-12-14 05:41:09 所属栏目:Windows 来源:网络整理
导读:我想使用批处理文件插入一个字符串来替换特定列中的空白空间 说我有一个像下面这样的input.txt field1 field2 field3AAAAA BBBBB CCCCCDDDDD EEEEEFFFFF GGGGG HHHHH 我需要在每个空字段上插入一个字符串“NULL”,并确保字段1不为空,而字段2,3有时将为空.另
我想使用批处理文件插入一个字符串来替换特定列中的空白空间
说我有一个像下面这样的input.txt field1 field2 field3 AAAAA BBBBB CCCCC DDDDD EEEEE FFFFF GGGGG HHHHH 我需要在每个空字段上插入一个字符串“NULL”,并确保字段1不为空,而字段2,3有时将为空.另外,field1和field2之间的空间不同于field2& field2.领域3 output.txt的 field1 field2 field3 AAAAA BBBBB CCCCC DDDDD NULL EEEEE FFFFF NULL NULL GGGGG HHHHH NULL 因为我仍然需要批处理文件脚本.. @echo off set line= for /F in (input.txt)do if "!line:~12" equ " " write "NULL" >> (i am not sure whether this work) if "!line:~29" equ " " write "NULL" echo .>> output.txt 也许,任何人都可以纠正我的错误? 解决方法
正如所承诺的,这是Python的解决方案.使用Python 3.x或Python 2.7,该程序可以正常工作.如果您对编程非常陌生,我建议使用Python 3.x,因为我觉得它更容易学习.你可以从这里免费获得Python:
http://python.org/download/
最新版本的Python是版本3.2.3;我建议你明白. 将Python代码保存在名为add_null.py的文件中,并使用以下命令运行它: python add_null.py input_file.txt output_file.txt 代码,有很多评论: # import brings in "modules" which contain extra code we can use. # The "sys" module has useful system stuff,including the way we can get # command-line arguments. import sys # sys.argv is an array of command-line arguments. We expect 3 arguments: # the name of this program (which we don't care about),the input file # name,and the output file name. if len(sys.argv) != 3: # If we didn't get the right number of arguments,print a message and exit. print("Usage: python add_null.py <input_file> <output_file>") sys.exit(1) # Unpack the arguments into variables. Use '_' for any argument we don't # care about. _,input_file,output_file = sys.argv # Define a function we will use later. It takes two arguments,a string # and a width. def s_padded(s,width): if len(s) >= width: # if it is already wide enough,return it unchanged return s # Not wide enough! Figure out how many spaces we need to pad it. len_padding = width - len(s) # Return string with spaces appended. Use the Python "string repetition" # feature to repeat a single space,len_padding times. return s + ' ' * len_padding # These are the column numbers we will use for splitting,plus a width. # Numbers put together like this,in parentheses and separated by commas,# are called "tuples" in Python. These tuples are: (low,high,width) # The low and high numbers will be used for ranges,where we do use the # low number but we stop just before the high number. So the first pair # will get column 0 through column 11,but will not actually get column 12. # We use 999 to mean "the end of the line"; if the line is too short,it will # not be an error. In Python "slicing",if the full slice can't be done,you # just get however much can be done. # # If you want to cut off the end of lines that are too long,change 999 to # the maximum length you want the line ever to have. Longer than # that will be chopped short by the "slicing". # # So,this tells the program where the start and end of each column is,and # the expected width of the column. For the last column,the width is 0,# so if the last column is a bit short no padding will be added. If you want # to make sure that the lines are all exactly the same length,change the # 0 to the width you want for the last column. columns = [ (0,12,12),(12,29,17),(29,999,0) ] num_columns = len(columns) # Open input and output files in text mode. # Use a "with" statement,which will close the files when we are done. with open(input_file,"rt") as in_f,open(output_file,"wt") as out_f: # read the first line that has the field headings line = in_f.readline() # write that line to the output,unchanged out_f.write(line) # now handle each input line from input file,one at a time for line in in_f: # strip off only the line ending line = line.rstrip('n') # start with an empty output line string,and append to it output_line = '' # handle each column in turn for i in range(num_columns): # unpack the tuple into convenient variables low,width = columns[i] # use "slicing" to get the columns we want field = line[low:high] # Strip removes spaces and tabs; check to see if anything is left. if not field.strip(): # Nothing was left after spaces removed,so put "NULL". field = "NULL" # Append field to output_line. field is either the original # field,unchanged,or else it is a "NULL". Either way,# append it. Make sure it is the right width. output_line += s_padded(field,width) # Add a line ending to the output line. output_line += "n" # Write the output line to the output file. out_f.write(output_line) 运行此程序的输出: field1 field2 field3 AAAAA BBBBB CCCCC DDDDD NULL EEEEE FFFFF NULL NULL GGGGG HHHHH NULL (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 批处理文件 – for for循环中的多个do命令:将字符串回送到
- 删除Win10文件管理器中的文档音乐视频OneDrive快速访问等
- windows – 你应该在捕获图像之前进行碎片整理吗?
- Windows – 大型SVN检出偶尔失败
- 在Windows / Active Directory环境中的服务器上配置GIT
- 开放源代码 – 打开Windows Workflow的替代方案
- Virtualbox在Windows上启动VM无头
- windows-server-2012 – 如何正确地为文件服务器进行灾难恢
- windows-server-2008 – 如何在Windows Server 2008上找到名
- windows-server-2008-r2 – “删除旧文件”批处理脚本
推荐文章
站长推荐
热点阅读