我是 xcopy 新手。我尝试将 excel 格式的文件移动到新目标并以 csv 文件格式移动。我必须这样做,以便 DMExpress ETL 作业可以移动文件然后读取它。这就是我公司想要完成的方式。
到目前为止,这就是我所拥有的:
xcopy "\blah\blah\blah\blah*.xlsx" "\blah\blah\blah\blah\Badge.csv" /Y <f.txt> create_copy_script.log
不确定为什么我必须有 <f.txt>,如果有人能解释一下,那就太好了。但这是次要问题。
当我在 .bat 文件中运行此文件,然后打开该文件(该文件确实移动并更改其名称)时,出现以下错误:
“Badge.csv”的文件格式和扩展名不匹配。该文件可能已损坏或不安全。除非您信任其来源,否则请不要打开它。您仍然要打开它吗?
现在,ETL 的下一部分必须打开此文件并将数据加载到数据库表中。
为了现在能够做到这一点,我必须打开这个文件,将其重新保存为 csv 文件,然后 ETL 的第二部分才能完美运行。但我想要自动化。我无法在周末打开这个文件,这太愚蠢了。
因此,我假设我的脚本出了问题。移动和重命名应该分开吗?有没有更好的方法?也许我不能只重命名文件和扩展名,如果我不能,有什么更好的方法可以做到这一点?
注意:我需要将原始文件保留在其原始文件夹中,然后复制并移动它,这就是我使用 xcopy 的原因。
答案1
Microsoft Excel.xlsx
文件是非常与逗号分隔值文件的格式不同.csv
。您的xcopy
命令会更改文件的名称,但不会更改内容。
实现自动化的简单方法之一是使用 powershell,使用以下模块ImportExcel
:
# only need to install once on a system
Install-Module ImportExcel
# then automate this line to copy and convert your file to a .csv
Import-Excel 'c:\path\to\input.xlsx' | Export-Csv 'c:\path\to\output.csv' -NoTypeInformation
如果你喜欢,还有类似的 Python 模块。如果没有额外的工具,你无法在基本的 CMD shell 中完成这件事