我想创建一个.bat文件来帮助我遍历我的.csv文件。我不知道列数或行数。我只知道分隔符是分号
所以我的。csv示例:
a;b;c
1qw;ads;f
ads;d;da
ads;asfas;afs
我试过的代码:
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ teszt2.csv"`) do (
set /p="var=%%a"|clip
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
echo(!var!
ENDLOCAL
)
…但它不是很好,因为它只返回最后一行,所以如果我在运行批处理文件后按CTRL + V,结果将是:var=4:ads;asfas;afs
我想把所有的数据保存到我的剪贴板。
解决方案吗?谢谢你!
如果您的目标是将和原样复制到剪贴板中,只需运行
type "C:path_to_yourmy.csv" | clip
如果您希望删除;
字符并添加空格,则:
setlocal enabledelayedexpansion
for /f "usebackq tokens=* delims=" %%a in ("usedatatmp1.txt") do (
set "line=%%a"
set "line=!line:;= !"
echo/!line!>>tmp
)
type tmp | clip & del /q tmp
:end
endlocal
exit /b 0
问题似乎是您使用了DisableDelayedExpansion
。我认为你应该用EnableDelayedExpansion
。
我稍微调整了一下代码(并为.csv使用了另一个名称):
SETLOCAL ENABLEDELAYEDEXPANSION
set clipboard=
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ test.csv"`) do (
set clipboard=!clipboard! "var=%%a"
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
echo(!var!
ENDLOCAL
)
echo %clipboard%
echo %clipboard% | clip
使用下面的代码,生成一个包含如下内容的.csv:
a;b;c
1qw;ads;f
ads;d;da
ads;asfas;afs
在剪贴板中的存储方式如下:
"var=1:a;b;c" "var=2:1qw;ads;f" "var=3:ads;d;da" "var=4:ads;asfas;afs"