我们如何根据分隔符之前的行中遇到的第一个单词对大量文件中的内容进行排序?按照自定义排序顺序。
我将用例子来解释这一点。假设我有数百个如下所示的文件(下面的文件故意非常短,实际上每个文件都有大约 100 个字段):
文件1
headb_mask,*off
neck,models/players/az/hair1
headc_eyes,models/players/az/face_1
headc_face,models/players/az/face_1
torso_collar,*off
torso_hood,*off
torsoa,models/players/az/torso_1
r_arma,models/players/az/torso_1
l_arma,models/players/az/torso_1
文件2
headb_mask,*off
headc_eyes,models/players/az/face_2
neck,models/players/az/hair1
headc_face,models/players/az/face_2
torso_collar,*off
torsoa,*off
torso_hood,models/players/az/torso_1
r_arma,models/players/az/torso_1
l_arma,models/players/az/torso_1
我希望他们都遵循这个自定义排序顺序:
headc_eyes,
headc_face,
headb_mask,
neck,
torso_collar,
torso_hood,
torsoa,
l_arma,
r_arma
所以后处理的文件将如下所示:
文件1
headc_eyes,models/players/az/face_1
headc_face,models/players/az/face_1
headb_mask,*off
neck,models/players/az/hair1
torso_collar,*off
torso_hood,*off
torsoa,models/players/az/torso_1
l_arma,models/players/az/torso_1
r_arma,models/players/az/torso_1
文件2
headc_eyes,models/players/az/face_2
headc_face,models/players/az/face_2
headb_mask,*off
neck,models/players/az/hair1
torso_collar,*off
torso_hood,models/players/az/torso_1
torsoa,*off
l_arma,models/players/az/torso_1
r_arma,models/players/az/torso_1
我们怎样才能做到这一点?像这样的文件有数百个,手动操作需要花费很多时间。任何技术都是好的。
定义您的订单并在循环中使用您的订单作为过滤器:
1.使用
for
循环逐个文本文件选择文件 (%%~i
)2.第二个
for
循环将分隔行,用于过滤每个文件的行 ( )按自定义顺序%%~i
一次订购一个项目 ( )%%~G
3.第三个
for /f
将每个%%~#
文件一次应用一次出现的情况 ( ) 作为已选择文件的过滤器,根据逗号返回第一个出现的情况4.将输出重定向到临时文件(
>TMPFile
),然后用它替换原始文件move /y
一些进一步阅读:
种类 /?
为了 /?
对于/F
重定向 |, <, > 2>, ...
是什么
%~dp0
意思,它是如何运作的?”Windows命令解释器cmd.exe如何解析脚本