Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
批处理-Can';我似乎无法读取CSV文件_Csv_Parsing_Batch File - Fatal编程技术网

批处理-Can';我似乎无法读取CSV文件

批处理-Can';我似乎无法读取CSV文件,csv,parsing,batch-file,Csv,Parsing,Batch File,我对文本文件没有问题,但是当我尝试用csv做一些简单的事情时,它不起作用 csv可在此处找到: 代码: 有人能帮忙吗!谢谢大家! Notepad++说你的文件是用UCS2-LE和BOM编码的。我把编码改成了ANSI,你的代码正常了。值得一提的是,type命令似乎更能容忍这种编码和字节顺序标记 @echo off&setlocal 设置“file=param_table.csv” 对于/f“delims=“%%I in('类型“%file%”)do( 设置“行=%%I” 延迟扩展 回声(!线! 端

我对文本文件没有问题,但是当我尝试用csv做一些简单的事情时,它不起作用

csv可在此处找到:

代码:


有人能帮忙吗!谢谢大家!

Notepad++说你的文件是用UCS2-LE和BOM编码的。我把编码改成了ANSI,你的代码正常了。值得一提的是,
type
命令似乎更能容忍这种编码和字节顺序标记

@echo off&setlocal
设置“file=param_table.csv”
对于/f“delims=“%%I in('类型“%file%”)do(
设置“行=%%I”
延迟扩展
回声(!线!
端部
)

与rojo有相同的问题,只是为了显示使用
delims=,
这里是我的批处理

@Echo off
Set FileNAme=".\param_table.csv"
Echo whole lines
for /f "delims=" %%a in ('type %FILENAME%') DO (
    Set FileLine=%%a
    echo !FileLine!
)
Echo:
Echo split into fields/columns reversed order
for /f "tokens=1-10 delims=," %%a in ('type %FILENAME%') DO (
    echo %%j,%%i,%%h,%%g,%%f,%%e,%%d,%%c,%%b,%%a
)
输出

whole lines
Name,Type,Value,Designate,Access,Source,Description,Restricted,Unit Quantity,Unit
TITLE_1,String,PCB ASSY,Yes,Full,User-Defined,,,,

split into fields/columns reversed order
Unit,Unit Quantity,Restricted,Description,Source,Access,Designate,Value,Type,Name
,,,,User-Defined,Full,Yes,PCB ASSY,String,TITLE_1
我的十六进制vbscript显示以下内容:

Detected Byte Order Mark (BOM) : UTF16LE

Blk00000: File : param_table.csv
HexOffs.:_+0_+1_+2_+3__+4_+5_+6_+7__+8_+9_+A_+B__+C_+D_+E_+F__----____----____
00000000: FF FE 4E 00  61 00 6D 00  65 00 2C 00  54 00 79 00  ..N.a.m.e.,.T.y.
00000010: 70 00 65 00  2C 00 56 00  61 00 6C 00  75 00 65 00  p.e.,.V.a.l.u.e.
00000020: 2C 00 44 00  65 00 73 00  69 00 67 00  6E 00 61 00  ,.D.e.s.i.g.n.a.
00000030: 74 00 65 00  2C 00 41 00  63 00 63 00  65 00 73 00  t.e.,.A.c.c.e.s.
00000040: 73 00 2C 00  53 00 6F 00  75 00 72 00  63 00 65 00  s.,.S.o.u.r.c.e.

多亏了Rojo,我使用了

powershell "ipcsv !CSVFileName!" >!TXTFileName!
我也用过

powershell "get-content !CSVFileName!" >!TXTFileName!

仅转换准确的文件而不重新格式化。因此,当值本身中存在逗号、冒号和引号时,我能够解释任何解析问题;在我自己的代码中。

问题出在哪里?您想打印字段还是只打印行?请显示更多批处理。我们无法从您发布的内容中分辨出问题所在说明您的
cmd
会话已建立。您的实际文件名是什么?文件是否在当前目录中?您得到了什么您不期望的响应?什么“不工作?”目前我甚至无法回显这些行,一旦我可以读取这些行,我就可以处理它。只需将您的文件名变量设置为下载文件的位置。您可以添加:@echo off setlocal EnableDelayedExpansion。就是这样!请在链接中使用该文件,因为这是另一个系统的部分输出,如果存在任何编码问题,我希望知道。请嵌入(摘录)将CSV文件导入到您的问题中,而不仅仅是提供指向某些外部资源的链接,因此问题在将来仍然完整,并且消除了访问权限不足的风险…感谢您的回答。是否有方法使用批处理更改编码?此文件是从另一个程序导出的,我需要将其删除自动执行。@Wajo357好吧,我尝试了
chcp 65001
将控制台代码页更改为Unicode,但这不允许
for/f
循环以本机方式读取内容。对于这种处理,PowerShell将比批处理更宽容。在控制台中,
PowerShell“gc param_table.csv”{“line:$\”}
按预期输出。事实上,powershell可以轻松地将csv文本反序列化为对象,并可能提供更优雅的解决方案。请尝试
powershell“ipcsv param_table.csv”
谢谢。我对powershell没有做太多工作。我如何一次遍历每一行来查找某些值?我可以将其导出为文本文件吗?powershell“ipcsv param_table.csv”看起来不错。如果我可以将其导出为文本文件进行处理,那将非常棒!嗯……这很简单。我刚刚做了powershell“ipcsv参数表.csv">file.txtso您也转换了文件?不是很明确,类型本身进行转换。
param_table.csv
仍然是您的原始格式,请参见我的答案中附加的十六进制otuput。我不能使用iconv之类的东西?我不明白您的目的是什么。如果您想将文件保留在UTF16LE批处理中,则不是理想的选择。如果您很好,请转换类型执行此操作没有问题。您可以在运行批处理之前转换文件,类型仍将处理该文件。问题是,转换为cp1252或cp850将导致这些代码页中不可用的字符丢失。我正在使用另一个软件的mapkey导出csv,然后触发批处理。将我不认为手动干预是可行的,特别是因为这将由其他用户完成。我想自动化这个过程。我很确定是Rojo帮了你。
powershell "ipcsv !CSVFileName!" >!TXTFileName!
powershell "get-content !CSVFileName!" >!TXTFileName!