如何修改txt的内容并在新文件夹中另存为csv

时间:2015-03-13 11:24:07

标签: csv batch-file converter

我是新手,并尝试在论坛等搜索答案,并已部分到那里但需要帮助才能达到目的。

它是什么 - 我需要一个程序 - 基本的东西,即.bat文件从文件夹A中取出.txt文件,修改文件的内容(用分号替换所有逗号)并将它们移动到文件夹B但是作为一个.csv文件不是文本文件。

最多可以说有20个小文件被转换为'

我找到了以下代码来替换所有代码;并保存为.csv文件

    @echo off
    setlocal enabledelayedexpansion

    for /f "delims==" %%A in (13-06-477.txt) do set string=%%A & echo !string:  =;! >> 13-06-477.csv

但这会转换指定的文件而不是具有多个文件的文件夹的变量名称。有人可以帮忙吗?

非常感谢

克里斯

1 个答案:

答案 0 :(得分:0)

示例脚本:

@echo off
setlocal enabledelayedexpansion
set "fldrin=Folder A"
set "fldrou=Folder B"
for /f "tokens=*" %%G in ('dir /B "%fldrin%\*.txt"') do (
    echo in="%fldrin%\%%~G" out="%fldrou%\%%~nG.csv"
    rem type nul>"%fldrou%\%%~nG.csv"
    for /F "usebackq tokens=*" %%A in ("%fldrin%\%%~G") do (
        set "string=%%A"
        echo !string:,=;!
        rem echo !string:,=;!>>"%fldrou%\%%~nG.csv"
    )
)

示例脚本中使用了一些实践(请参阅资源链接):

仔细检查输出。然后,您可以在调试之前删除rem

真实剧本

@echo off
SETLOCAL enableextensions disabledelayedexpansion
set "fldrin=D:\bat\files\29030979 in"
set "fldrou=D:\bat\files\29030979 ou"
md "%fldrou%" 2>nul
for /f "tokens=*" %%G in ('dir /B "%fldrin%\*.txt"') do (
    echo in="%fldrin%\%%~G" out="%fldrou%\%%~nG.csv"
    type nul>"%fldrou%\%%~nG.csv"
    for /F "usebackq tokens=*" %%A in ("%fldrin%\%%~G") do (
        set "string=%%A"
        setlocal enabledelayedexpansion
        echo !string:,=;!
        echo !string:,=;!>>"%fldrou%\%%~nG.csv"
        endlocal
    )
)
ENDLOCAL

输出:还应回答有关.bat.txt文件放置和名称的其他问题。

d:\bat>D:\bat\StackOverflow\29030979.bat
in="D:\bat\files\29030979 in\15-03-2015-A.txt" out="D:\bat\files\29030979 ou\15-03-2015-A.csv"
15-03-2015-A.txt; 16.03.2015; 15:04:28;31
15-03-2015-A.txt; 16.03.2015; 15:04:36;19
15-03-2015-A.txt; 16.03.2015; 15:05:23;66
in="D:\bat\files\29030979 in\15-03-2015-B.txt" out="D:\bat\files\29030979 ou\15-03-2015-B.csv"
15-03-2015-B.txt; 16.03.2015; 15:04:28;31
15-03-2015-B.txt; 16.03.2015; 15:04:36;19
15-03-2015-B.txt; 16.03.2015; 15:05:23;66

d:\bat>type "D:\bat\files\29030979 ou\15-03-2015-A.csv"
15-03-2015-A.txt; 16.03.2015; 15:04:28;31
15-03-2015-A.txt; 16.03.2015; 15:04:36;19
15-03-2015-A.txt; 16.03.2015; 15:05:23;66

d:\bat>

作为

的重新运行结果获得的输入文件
for /F "tokens=*" %G in ('dir /B /S "D:\bat\files\29030979 in"') do @echo %~nxG, %date%, %time%>>"%~fG"