Как я могу пакетно или VBS следующие CSV, чтобы удалить определенные символы? - PullRequest
0 голосов
/ 05 июля 2019

Я настраиваю некоторые файлы для вывода на ЧПУ для обработки древесины, и для этого требуется, чтобы выходной сигнал САПР соответствовал их формату.

Я пытался создать для него макрос Excel, но оператор считает, что использовать его сложно.

Для CSV необходимо, чтобы ABS 1 равнялся 1, а CAM - имя файла для удаления _1 и _2 (последние 2 символа).

Цените это заранее! CSV согласно приложенному коду.

"CAM, file name",Length ,Width,Thickness,Material,Count,Edge Left,Edge Right,Edge Top,Edge Bottom,Barcode,Grain
,800.00,418.00,1650.00,,1,,,,,,
DOOR_LH_13_1,395.50,778.00,18.00,white,1,"ABS     1","ABS     1","ABS     1","ABS     1",279162,
DOOR_RH_14_1,395.50,778.00,18.00,white,1,"ABS     1","ABS     1","ABS     1","ABS     1",279164,
bottom_front_5_1,764.00,100.00,18.00,white,1,"ABS     1",,,"ABS     1",279148,
top_4_1,764.00,400.00,18.00,white,1,"ABS     1",,"ABS     1","ABS     1",279146,
left_side_1_1,1650.00,400.00,18.00,white,1,"ABS     1","ABS     1","ABS     1","ABS     1",279140,
right_side_2_1,1650.00,400.00,18.00,white,1,"ABS     1","ABS     1","ABS     1","ABS     1",279142,
Divider_8_1,374.00,352.00,18.00,white,1,,,"ABS     1",,279154,
Shelf_11_1,764.00,352.00,18.00,white,1,,,"ABS     1",,279158,
Shelf_12_1,764.00,352.00,18.00,white,1,,,"ABS     1",,279160,
Bottom_3_1,764.00,382.00,18.00,white,1,,,"ABS     1",,279144,
shelf_6_1,764.00,382.00,18.00,white,1,,,"ABS     1",,279150,
shelf_10_1,764.00,382.00,18.00,white,1,,,"ABS     1",,279156,
back_7_1,1632.00,764.00,18.00,white,1,,,,,279152,

1 Ответ

0 голосов
/ 05 июля 2019

В пакетном режиме вы обычно обрабатываете csv с for /f и
разделяется запятой, но for /f рассматривает соседние разделители только как один.

Поэтому я предлагаю использовать язык сценариев с регулярными выражениями, такими как PowerShell.

(Get-Content .\SO_56900009.csv) -replace '"ABS *1"','1' -replace '(?<=_\d+)_\d'|Set-Content '.\New.csv'

> Get-Content .\New.csv
"CAM, file name",Length ,Width,Thickness,Material,Count,Edge Left,Edge Right,Edge Top,Edge Bottom,Barcode,Grain
,800.00,418.00,1650.00,,1,,,,,,
DOOR_LH_13,395.50,778.00,18.00,white,1,1,1,1,1,279162,
DOOR_RH_14,395.50,778.00,18.00,white,1,1,1,1,1,279164,
bottom_front_5,764.00,100.00,18.00,white,1,1,,,1,279148,
top_4,764.00,400.00,18.00,white,1,1,,1,1,279146,
left_side_1,1650.00,400.00,18.00,white,1,1,1,1,1,279140,
right_side_2,1650.00,400.00,18.00,white,1,1,1,1,1,279142,
Divider_8,374.00,352.00,18.00,white,1,,,1,,279154,
Shelf_11,764.00,352.00,18.00,white,1,,,1,,279158,
Shelf_12,764.00,352.00,18.00,white,1,,,1,,279160,
Bottom_3,764.00,382.00,18.00,white,1,,,1,,279144,
shelf_6,764.00,382.00,18.00,white,1,,,1,,279150,
shelf_10,764.00,382.00,18.00,white,1,,,1,,279156,
back_7,1632.00,764.00,18.00,white,1,,,,,279152,

Чтобы быть в теме, вы можете поместить этот лайнер в пакетный файл:

powershell -NoP -C "(Get-Content .\SO_56900009.csv) -replace '\"ABS *1\"','1' -replace '(?<=_\d+)_\d'|Set-Content '.\New.csv'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...