我是新手,并尝试在论坛等搜索答案,并已部分到那里但需要帮助才能达到目的。
它是什么 - 我需要一个程序 - 基本的东西,即.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
但这会转换指定的文件而不是具有多个文件的文件夹的变量名称。有人可以帮忙吗?
非常感谢
克里斯
答案 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"