用.bat文件遍历.csv并将其内容复制到剪贴板



我想创建一个.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" 

相关内容

  • 没有找到相关文章

最新更新