找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29223|回复: 5

100元求助批处理出货文件

  [复制链接]
发表于 2020-12-15 00:17:38 | 显示全部楼层 |阅读模式
我公司每天从系统导出的出货单不便于仓库出货,能否请大神帮忙设计如何从DO0029批处理至DO0029副本的样式,仓库的人文化不高,希望尽可能简便一些。
支付宝或者微信均可 微信13311886303
发表于 2020-12-15 01:32:06 | 显示全部楼层
本帖最后由 went 于 2020-12-15 19:58 编辑

保存为bat,ANSI编码,拖动要处理的csv文件到bat文件上即可
  1. /*&cls&@echo off
  2. if "%~1"=="" echo.请拖动要处理的csv文件到本程序图标上&pause&exit
  3. if /i not "%~x1"==".csv" echo.非csv文件!&pause&exit
  4. cd /d "%~dp1"
  5. del "%~n1_new.xls" /f >nul 2>nul
  6. echo.%~1| cscript -E:javascript -Nologo "%~0" &pause&exit
  7. */
  8. //交换一行数据
  9. function swap(lineNum,maps,sheet){
  10.         shell.Exec("cmd /c title 处理第" + lineNum +"行数据.");
  11.         var array,tmpStr="",firstCol=null
  12.         for(var key in maps){
  13.                 if(firstCol == null)
  14.                         firstCol = key;
  15.                 tmpStr+=sheet.Cells(lineNum,maps[key]).Text == "0" ? "" : sheet.Cells(lineNum,maps[key]).Text;
  16.                 tmpStr += ",";
  17.         }
  18.         for(var key in maps){
  19.                 sheet.Cells(lineNum,maps[key]).Value = tmpStr.split(",")[maps[key]-firstCol];
  20.         }
  21. }
  22. //开始
  23. var csvFile = WSH.StdIn.ReadLine();
  24. var eObj = new ActiveXObject("Excel.Application");
  25. var fObj = new ActiveXObject("Scripting.FileSystemObject");
  26. var shell = new ActiveXObject("WScript.Shell");
  27. eObj.Visible = false;
  28. var excelA = eObj.Workbooks.Open(csvFile.replace(/\\/g,"\\\"));
  29. //复制到xls
  30. WSH.Echo("正在复制csv数据到xls ...\n");
  31. excelA.ActiveSheet.Copy();
  32. excelB = eObj.Workbooks.Item(2);
  33. excelA.Close();
  34. //计算行列数
  35. var totalLine = 0;
  36. var totalCol = 0;
  37. var f = fObj.OpenTextFile(csvFile,1);
  38. while(!f.AtEndOfStream){
  39.         var curCol = f.ReadLine().split(",").length;
  40.         if(curCol > totalCol)totalCol = curCol;
  41.         totalLine += 1;
  42. }
  43. //自定义数据
  44. //*************************************************
  45. var maps={4:4,5:9,6:7,7:6,8:5,9:8,10:10};                                //列交换数据     [第几列:换到第几列]
  46. var leftTop = "B5",right = "L",bottom = totalLine;                //加边框范围数据 [左上角,右边界,下边界]
  47. //*************************************************
  48. //添加边框
  49. WSH.Echo("正在添加边框 [" + leftTop+ ":" + right + bottom + "]    ...\n");
  50. var cells = eObj.Range(leftTop+ ":" + right + bottom);
  51. cells.Borders.LineStyle = 1;
  52. cells.Borders.Weight = 2;
  53. WSH.Echo("正在调整数据...\n");
  54. //交换名称
  55. swap(6,maps,excelB.ActiveSheet);
  56. //交换数字
  57. for(var i=8;i<totalLine;i++)
  58.         swap(i,maps,excelB.ActiveSheet);
  59. //生成文件
  60. excelB.SaveAs(fObj.GetParentFolderName(csvFile)+"\"+fObj.GetBaseName(csvFile)+"_new.xls");
  61. eObj.Quit();
  62. shell.Exec("cmd /c title 处理完成!");
  63. WSH.Echo("完成,输出文件: "+fObj.GetParentFolderName(csvFile)+"\"+fObj.GetBaseName(csvFile)+"_new.xls");
复制代码
发表于 2020-12-15 07:11:50 | 显示全部楼层
bat跟csv文件放一起双击运行

评分

参与人数 1技术 +1 收起 理由
bangyou + 1 大神

查看全部评分

发表于 2020-12-15 09:01:10 | 显示全部楼层
本帖最后由 ivor 于 2020-12-15 10:59 编辑

office 自带清除单元格0为空

评分

参与人数 1技术 +1 收起 理由
bangyou + 1 有交换列

查看全部评分

发表于 2021-1-1 21:26:58 | 显示全部楼层
回复 3# zaqmlp


    大牛,,,bat居然/* */,然后下面写的是js脚本么?

请教下,这句怎么理解啊dir /a-d-h/b *.csv|cscript -nologo -e:jscript "%~f0" "%newfolder%"
发表于 2021-1-2 13:56:23 | 显示全部楼层
将目录下所有 csv文件传递给cscript处理  这里"%newfolder%"是保存文件处理后的新目录吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:18 , Processed in 0.021488 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表