Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在记事本+中查找特定数字并添加字符+;_Batch File_Notepad++ - Fatal编程技术网

Batch file 在记事本+中查找特定数字并添加字符+;

Batch file 在记事本+中查找特定数字并添加字符+;,batch-file,notepad++,Batch File,Notepad++,我正在尝试使用记事本++查找有错误数字的数字集,并在其前面添加零以解决此问题 所以,我需要找到大于2位和小于6位的数字。然后加上零,使其成为6位数字 这必须在记事本++或批处理中完成,因为其他没有计算背景的人也需要运行它 我试着学习一些正则表达式,但没能想出一个好方法来填充6位数 下面是一些我需要自动执行的示例: 1 1 21 10121 416138 1 1 22 10122 574158 1 1 23 10123 43218 1 1 24

我正在尝试使用记事本++查找有错误数字的数字集,并在其前面添加零以解决此问题

所以,我需要找到大于2位和小于6位的数字。然后加上零,使其成为6位数字

这必须在记事本++或批处理中完成,因为其他没有计算背景的人也需要运行它

我试着学习一些正则表达式,但没能想出一个好方法来填充6位数

下面是一些我需要自动执行的示例:

1   1   21  10121   416138
1   1   22  10122   574158
1   1   23  10123   43218
1   1   24  10124   58157
1   1   25  10125   5880
1   1   26  10126   127144


这不是一个很好的方法,但适用于数量较少的数字集。我用2150行代码测试了您的示例,几乎可以立即完成。但开始在大约100万条线上挣扎。它可以工作,但需要时间:

使用Notepad++中的搜索和替换,使用搜索模式正则表达式搜索

\b([0-9]{3,5})\b

并替换为
0\1

并点击“全部替换”按钮3次。
因此,每个3-5位数字都将被其自身替换为前面的0。当替换所有3次时,您要确保即使是3位数字也用3个前导零填充

再次不是一个好的方式,但为我工作

编辑:刚刚看到它必须自动完成。。。也许记事本++有一些工具可以作为脚本执行搜索和替换,但我将把这留给其他人;)

还有一个编辑:我只是无法控制自己,我必须找到它。。。我使用notepad++的宏功能记录了上述S&R的过程,并在哪里找到保存的宏

结果是:

<Macro Key="32" Shift="yes" Alt="yes" Ctrl="no" name="MyUpdater">
  <Action sParam="" lParam="0" wParam="0" message="1700" type="3"/>
  <Action sParam="\b([0-9]{3,5})\b" lParam="0" wParam="0" message="1601" type="3"/>
  <Action sParam="" lParam="2" wParam="0" message="1625" type="3"/>
  <Action sParam="0\1" lParam="0" wParam="0" message="1602" type="3"/>
  <Action sParam="" lParam="768" wParam="0" message="1702" type="3"/>
  <Action sParam="" lParam="1609" wParam="0" message="1701" type="3"/>
  <Action sParam="" lParam="0" wParam="0" message="1700" type="3"/>
  <Action sParam="\b([0-9]{3,5})\b" lParam="0" wParam="0" message="1601" type="3"/>
  <Action sParam="" lParam="2" wParam="0" message="1625" type="3"/>
  <Action sParam="0\1" lParam="0" wParam="0" message="1602" type="3"/>
  <Action sParam="" lParam="768" wParam="0" message="1702" type="3"/>
  <Action sParam="" lParam="1609" wParam="0" message="1701" type="3"/>
  <Action sParam="" lParam="0" wParam="0" message="1700" type="3"/>
  <Action sParam="\b([0-9]{3,5})\b" lParam="0" wParam="0" message="1601" type="3"/>
  <Action sParam="" lParam="2" wParam="0" message="1625" type="3"/>
  <Action sParam="0\1" lParam="0" wParam="0" message="1602" type="3"/>
  <Action sParam="" lParam="768" wParam="0" message="1702" type="3"/>
  <Action sParam="" lParam="1609" wParam="0" message="1701" type="3"/>
</Macro>

关闭记事本++。 转到
%appdata%\Notepad++\
,用普通文本编辑器打开文件
shortcuts.xml
(Notepad++会将其覆盖回正常状态),然后从上面将xml代码放在那里(那里应该已经有一个名为“Trim Trailing and Save”的宏);只需将其放在关闭标签下并保存即可。现在打开Notepadd++并单击菜单栏中的宏时,应该有一个名为“MyUpdater”的标签。
当前快捷方式设置为Alt+Shift+Space,但您可以单击“宏->编辑快捷方式”来更改它

这对我来说很有效,你可以像这样将makro“导出”给其他用户

要反转此操作,您可以搜索
\b([0])
,并用空字符串替换它。请注意,您必须再次检查正则表达式!这里只需点击“全部替换”一次即可

如果还剩下什么,请随时询问:)

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
设置“sourcedir=U:\sourcedir”
设置“destdir=U:\destdir”
设置“filename1=%sourcedir%\q40601412.txt”
设置“outfile=%destdir%\outfile.txt”
(
对于(“%filename1%”中的/f“usebackqtokens=1-5”%%a,请执行以下操作(
集合/a列4=1000000+%%d
集合/a列5=1000000+%%e
回声%%a%%b%%c!第4列:~-6!!第5列:~-6!
)
)>“%outfile%”
后藤:EOF
您需要更改
sourcedir
destdir
的设置以适应您的环境

我使用了一个名为
q40601412.txt
的文件,其中包含了用于测试的数据

生成定义为%outfile%的文件

读取文件并将其标记为令牌1..令牌5到%%a..%e

将1000000添加到最后两列中的每一列,这将在每一列中生成数字1000000..1999999

Echo
再次显示五列,%%a..%%c,以及
column5
column6

间距由您决定。由于字段都是固定长度的(1,1,2,6,6),因此在
echo
行中使用空格或制表符

如果第3列可以是1位或2位,则

 SET /a column3=1000000+%%c

是必需的,并且echo
!第三栏:~-2
代替
%%c

这是制表符分隔的文件还是固定字段的文件?可能是
 SET /a column3=1000000+%%c