返回列表 发帖
回复 15# 522235677


    不是这意思 ,就是假如有五个CSV文件,你运行一遍BAT 有5个数据 你再运行一遍 那个表里就10个数据了

TOP

回复 16# haichuan5121
if exist new.csv del new.csvCOPY
把这个代码放第二行

TOP

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

回复 17# 522235677


    如果每个表取两个数比如刚才的D37和D38 分别放A列和B列呢,你给的编码怎么才能直接执行 不需要按一下键盘呢,进一步的求解:能不能执行这个批处理后 新表里的数据能实现根据生成数据自动生成一曲线??

TOP

回复 18# haichuan5121
@echo off & setlocal enabledelayedexpansion
if exist new.csv del new.csv
for /f "delims=" %%a in ('dir /b *.csv') do (
for /f "skip=36 delims=" %%b in ('type "%%a"') do (
set str=%%b
set str=!str:,=,$!
for /f "delims=, tokens=4" %%c in ("!str!") do (
if "!a!"=="" (
if "!x!"=="" (set x=%%c) else (set y=%%c&>>new.csv echo !x:$=!,!y:$=!&set a=1)
)
)
)
set x=
set a=
)
pause
start "" new.csvCOPY
好麻烦,只能这样了

TOP

csv不支持生成曲线

TOP

回复 19# 522235677


    好人做到底 ,授人与鱼不如授人与渔,如果再加数据怎么办啊,提取三个呢,每行编码大概给下功能备注吧,目的本来是提取三个数据的 所以先从提取一个请教了;

TOP

回复 20# 522235677


    csv可以用EXCEL打开啊

TOP

回复 20# 522235677


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

TOP

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

TOP

@echo off & setlocal enabledelayedexpansion
if exist new.csv del new.csv
set data=D37,E39,D38
for %%a in (%data%) do (
echo Process %%a
set /a d+=1
for %%b in (A B C D E F G H I J K L M) do (
set str=%%a
set /a n+=1
if "!str:~,1!"=="%%b" call :take !n! !str:~1,3! !d!
)
set n=
)
(for /f "delims=: tokens=2" %%a in ('findstr /n . new.csv^|findstr "1: 4: 7:"') do set /p=%%a,<nul)>$$.csv
echo.>>$$.csv
(for /f "delims=: tokens=2" %%a in ('findstr /n . new.csv^|findstr "2: 5: 8:"') do set /p=%%a,<nul)>>$$.csv
echo.>>$$.csv
(for /f "delims=: tokens=2" %%a in ('findstr /n . new.csv^|findstr "3: 6: 9:"') do set /p=%%a,<nul)>>$$.csv
move /y $$.csv new.csv >nul
start "" new.csv
exit
:take
set /a h=%2-1
for /f "delims=" %%a in ('dir /b *.csv') do (
        for /f "skip=%h% delims=" %%b in ('type "%%a"') do (
                set str=%%b
                set str=!str:,=,$!
                for /f "delims=, tokens=%1" %%c in ("!str!") do (
                        if "!a!"=="" (set str=%%c&>>new.csv echo !str:$=!)
set a=1
                )
)
        set a=
)
goto :eofCOPY
这代码我也是醉了,效率不高,不然得下功夫

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

本帖最后由 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

把n个1列的文件合并为一个n列的文件:output.txt
file1.txt  file2.txt file3.txt file4.txt .........
@echo off
setlocal enabledelayedexpansion
set /a n=2
set str=
type nul>output.txt
for /l %%a in (1,1,!n!) do (
  set /a n1=0
  for /f %%b in ('type file%%a.txt') do (
    set /a n1+=1
    for /l %%c in (!n1!,1,!n1!) do (
       set file%%a.row%%c=%%b
    )
  )
)
for /l %%a in (1,1,!n1!) do (
  for /l %%b in (1,1,!n!) do (
    set "str=!str!!file%%b.row%%a!   "
  )
  echo !str!>>output.txt
  set str=
)COPY

TOP

修改了下,不足的用0来补。
@echo off
setlocal enabledelayedexpansion
set /a n=3
set /a m=0
set str=
type nul>output.txt
for /l %%a in (1,1,!n!) do (
  set /a n1=0
  for /f %%b in ('type file%%a.txt') do (
    set /a n1+=1
    for /l %%c in (!n1!,1,!n1!) do (
       set file%%a.row%%c=%%b
    )
  )
  if !n1! gtr !m! (set /a m=!n1!)
)
for /l %%a in (1,1,!m!) do (
  for /l %%b in (1,1,!n!) do (
    if "!file%%b.row%%a!"=="" (set /a file%%b.row%%a=0)
    set "str=!str!!file%%b.row%%a!   "
  )
  echo !str!>>output.txt
  set str=
)COPY

TOP

回复 25# 522235677


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

TOP

返回列表