[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 34# yiwuyun


    感谢提供代码。。可惜实验失败。。没有刷出数据。 拿三楼的附件 复制10份,提取固定位置数据汇成一新的表格;19楼能提取数据也真确就是格式 我要求是三列 他那个是三行。。。求改写

TOP

给你两参考 结果显示符合不 可自己修改下
  1. @if(0)==(0) ECHO OFF
  2. CScript.exe -NoLogo -E:JScript %0 "%~dp0test.csv" "D37 D38 D39"
  3. pause&exit
  4. @end
  5. var filePath=  WSH.Arguments.Item(0)
  6. var oXL = new ActiveXObject("Excel.application");
  7. var oWB = oXL.Workbooks.open(filePath);
  8. oWB.worksheets(1).select();
  9. var oSheet = oWB.ActiveSheet;
  10. var ar = WSH.Arguments.Item(1).split(' ');
  11. var t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  12. var arr = [],len = ar.length;
  13. for (var i = 0; i < len; i++) {
  14.   var n = t.indexOf(ar[i].slice(0,1))+1;
  15.   var m = ar[i].slice(1);
  16.   arr.push(oSheet.Cells(m,n));
  17. }
  18. WSH.echo(arr);
  19. oXL.Quit();
复制代码
  1. @if(0)==(0) ECHO OFF
  2. CScript.exe -NoLogo -E:JScript %0 <test.csv "D37 D38 D39"
  3. pause&exit
  4. @end
  5. var arr = WSH.StdIn.Readall().split('\r\n');
  6. var len = arr.length;
  7. for (var i = 0; i < len; i++) {
  8.   arr[i] = arr[i].replace(/,,/gi,',\s,').split(/\,/);
  9. }
  10. var ar = WSH.Arguments.Item(0).split(' ');
  11. var t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  12. var tarr = [],len = ar.length;
  13. for (var i = 0; i < len; i++) {
  14.   var n = t.indexOf(ar[i].slice(0,1));
  15.   var m = ar[i].slice(1)-1;
  16.   tarr.push(arr[m][n]);
  17. }
  18. WSH.echo(tarr)
复制代码

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. for /l %%i in (37,1,39) do (
  3. set /a n=%%i-1
  4. set /a n1=%%i-36
  5. for /f "delims=" %%a in ('dir /b *.csv') do (
  6.         for /f "skip=!n! delims=, tokens=4" %%b in ('type "%%a"') do (
  7.                 if "!a!"=="" >>file!n1!.txt echo %%b
  8.                 set a=1
  9.         )
  10.         set a=
  11. )
  12. )
  13. set /a n=3
  14. set /a m=0
  15. set str=
  16. type nul>new.csv
  17. for /l %%a in (1,1,!n!) do (
  18.   set /a n1=0
  19.   for /f %%b in ('type file%%a.txt') do (
  20.     set /a n1+=1
  21.     for /l %%c in (!n1!,1,!n1!) do (
  22.        set file%%a.row%%c=%%b
  23.     )
  24.   )
  25.   if !n1! gtr !m! (set /a m=!n1!)
  26. )
  27. for /l %%a in (1,1,!m!) do (
  28.   for /l %%b in (1,1,!n!) do (
  29.     if "!file%%b.row%%a!"=="" (set /a file%%b.row%%a=0)
  30.     set "str=!str!!file%%b.row%%a!   "
  31.   )
  32.   echo !str!>>new.csv
  33.   set str=
  34. )
复制代码
试试。

TOP

回复 31# yiwuyun


    能不能把19楼的给修改下啊,19楼的完全符合我的设想,就是最后生成表格格式有点错误‘

TOP

回复 31# yiwuyun


    感谢大神指导 我这执行完全啊没反应。

TOP

  1. @echo off
  2. echo {>yiwuyun.txt
  3. echo FS=",">>yiwuyun.txt
  4. echo if(FNR==37){a1=$4}>>yiwuyun.txt
  5. echo if(FNR==38){a2=$4}>>yiwuyun.txt
  6. echo if(FNR==39){a3=$4;printf "%%s,%%s,%%s\n",a1,a2,a3}>>yiwuyun.txt
  7. echo }>>yiwuyun.txt
  8. gawk -f yiwuyun.txt *.csv>new.csv
  9. if exist yiwuyun.txt del yiwuyun.txt
复制代码

TOP

回复 25# 522235677


    大神  有时间给把格式改成正确的吧。数据能刷了 就是格式没有按列排列

TOP

修改了下,不足的用0来补。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a n=3
  4. set /a m=0
  5. set str=
  6. type nul>output.txt
  7. for /l %%a in (1,1,!n!) do (
  8.   set /a n1=0
  9.   for /f %%b in ('type file%%a.txt') do (
  10.     set /a n1+=1
  11.     for /l %%c in (!n1!,1,!n1!) do (
  12.        set file%%a.row%%c=%%b
  13.     )
  14.   )
  15.   if !n1! gtr !m! (set /a m=!n1!)
  16. )
  17. for /l %%a in (1,1,!m!) do (
  18.   for /l %%b in (1,1,!n!) do (
  19.     if "!file%%b.row%%a!"=="" (set /a file%%b.row%%a=0)
  20.     set "str=!str!!file%%b.row%%a!   "
  21.   )
  22.   echo !str!>>output.txt
  23.   set str=
  24. )
复制代码

TOP

把n个1列的文件合并为一个n列的文件:output.txt
file1.txt  file2.txt file3.txt file4.txt .........
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a n=2
  4. set str=
  5. type nul>output.txt
  6. for /l %%a in (1,1,!n!) do (
  7.   set /a n1=0
  8.   for /f %%b in ('type file%%a.txt') do (
  9.     set /a n1+=1
  10.     for /l %%c in (!n1!,1,!n1!) do (
  11.        set file%%a.row%%c=%%b
  12.     )
  13.   )
  14. )
  15. for /l %%a in (1,1,!n1!) do (
  16.   for /l %%b in (1,1,!n!) do (
  17.     set "str=!str!!file%%b.row%%a!   "
  18.   )
  19.   echo !str!>>output.txt
  20.   set str=
  21. )
复制代码

TOP

本帖最后由 haichuan5121 于 2014-12-17 08:59 编辑

能不能跟这个FTP下载代码合成一个啊? 下载完成后,执行大神的提取命令生成个新的表!
纯小白只能看别人的稍作修改,这个下载代码我还想只下载设定文件生成时间内的文件呢,这个时间段可以locle输入设定的!
比如只下载一周内新生成的文件,或者更高级点,提示命令行带起止日期设定的,
@echo off
rem 指定FTP用户名
set ftpUser=sputter
rem 指定FTP密码
set ftpPass=sputter
rem 指定FTP服务器地址
set ftpIP=10.30.1.4
rem 指定待下载的文件位于FTP服务器的哪个目录
set ftpFolder=/11/
set LocalFolder=F:\2  
set ftpFile=%2%/2.csv
>"%ftpFile%" (   
echo,%ftpUser%   
echo,%ftpPass%   
echo cd "%ftpFolder%"  
echo lcd "%LocalFolder%"  
echo bin   
echo mget *0.csv
start ftp -v -i -s:"%ftpFile%" %ftpIP%   
echo 任务完成...&pause>nul
)

TOP

本帖最后由 haichuan5121 于 2014-12-16 20:14 编辑

回复 25# 522235677


    99.8        99.8        455        200        200
99.8        99.9        455        200        200
99.8        455        455        200       
输出格式不对哦 ,, 另是 取D37.D38.D39的数据??   要改其他单元格的怎么改哦

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. if exist new.csv del new.csv
  3. set data=D37,E39,D38
  4. for %%a in (%data%) do (
  5. echo Process %%a
  6. set /a d+=1
  7. for %%b in (A B C D E F G H I J K L M) do (
  8. set str=%%a
  9. set /a n+=1
  10. if "!str:~,1!"=="%%b" call :take !n! !str:~1,3! !d!
  11. )
  12. set n=
  13. )
  14. (for /f "delims=: tokens=2" %%a in ('findstr /n . new.csv^|findstr "1: 4: 7:"') do set /p=%%a,<nul)>$$.csv
  15. echo.>>$$.csv
  16. (for /f "delims=: tokens=2" %%a in ('findstr /n . new.csv^|findstr "2: 5: 8:"') do set /p=%%a,<nul)>>$$.csv
  17. echo.>>$$.csv
  18. (for /f "delims=: tokens=2" %%a in ('findstr /n . new.csv^|findstr "3: 6: 9:"') do set /p=%%a,<nul)>>$$.csv
  19. move /y $$.csv new.csv >nul
  20. start "" new.csv
  21. exit
  22. :take
  23. set /a h=%2-1
  24. for /f "delims=" %%a in ('dir /b *.csv') do (
  25.         for /f "skip=%h% delims=" %%b in ('type "%%a"') do (
  26.                 set str=%%b
  27.                 set str=!str:,=,$!
  28.                 for /f "delims=, tokens=%1" %%c in ("!str!") do (
  29.                         if "!a!"=="" (set str=%%c&>>new.csv echo !str:$=!)
  30. set a=1
  31.                 )
  32. )
  33.         set a=
  34. )
  35. goto :eof
复制代码
这代码我也是醉了,效率不高,不然得下功夫

TOP

大神们能修改成提取三个数据的代码吗?或者命令行提示单元格位置;获取数据的啊

TOP

回复 20# 522235677


    取两个数的代码里面我也没有看到37字样啊 如果我想改成查询其他行的数据怎么办啊!

TOP

回复 20# 522235677


    csv可以用EXCEL打开啊

TOP

返回列表