Windows 批处理文件:文件名的第一个单词作为第 1 列
Windows Batch File: First word of File Name as column 1
来自 computing.net 的以下代码几乎完全有用,但需要稍作改动。我不知道这是如何工作的。有人可以帮忙吗?
for %%a in (*.csv) do call :addId "%%~Na" "%%a"
goto :EOF
:addId
@echo off
for /f "usebackq delims=" %%b in (%2) do (
> #.csv echo ID,%%b
goto :next
)
:next
for /f "usebackq skip=1 delims=" %%b in (%2) do (
>> #.csv echo %~1,%%b
)
move #.csv %2
- 需要去掉插入一个header"ID"
的代码
- 仅使用文件的第一个单词而不是完整的文件名 --- 作为第 1 列的值
这里,word 表示 collection 个由 space 分隔的字母表。所以第一个单词将是第一个 space.
之前的 collection 个字母
有人可以帮忙吗?
使用for /f 解析循环:
@echo off
for %%a in (*.csv) do (
echo Processing %%a
for /f "tokens=1 eol=*" %%b in ("%%~na") do (
set /p header=<"%%a"
call echo %%header%%
for /f "skip=1 usebackq delims=" %%c in ("%%a") do echo %%b,%%c
) >"%%a.new"
move /y "%%a.new" "%%a" >nul
)
pause
这将完整保留 header 行。
你能试试这个吗?请告诉我它是如何工作的。
setlocal enabledelayedexpansion
for %%a in (*.csv) do call :addId "%%~Na" "%%a"
goto :EOF
:addId
@echo off
for /f "usebackq delims=" %%b in (%2) do (
rem > #.csv echo ID,%%b
goto :next
)
:next
for /f "usebackq skip=1 delims=" %%b in (%2) do (
for /f "tokens=1 delims= " %%x in ("%~1") do set firstWord=%%x
>> #.csv echo !firstWord!,%%b
)
move #.csv %2
来自 computing.net 的以下代码几乎完全有用,但需要稍作改动。我不知道这是如何工作的。有人可以帮忙吗?
for %%a in (*.csv) do call :addId "%%~Na" "%%a"
goto :EOF
:addId
@echo off
for /f "usebackq delims=" %%b in (%2) do (
> #.csv echo ID,%%b
goto :next
)
:next
for /f "usebackq skip=1 delims=" %%b in (%2) do (
>> #.csv echo %~1,%%b
)
move #.csv %2
- 需要去掉插入一个header"ID" 的代码
- 仅使用文件的第一个单词而不是完整的文件名 --- 作为第 1 列的值
这里,word 表示 collection 个由 space 分隔的字母表。所以第一个单词将是第一个 space.
之前的 collection 个字母有人可以帮忙吗?
使用for /f 解析循环:
@echo off
for %%a in (*.csv) do (
echo Processing %%a
for /f "tokens=1 eol=*" %%b in ("%%~na") do (
set /p header=<"%%a"
call echo %%header%%
for /f "skip=1 usebackq delims=" %%c in ("%%a") do echo %%b,%%c
) >"%%a.new"
move /y "%%a.new" "%%a" >nul
)
pause
这将完整保留 header 行。
你能试试这个吗?请告诉我它是如何工作的。
setlocal enabledelayedexpansion
for %%a in (*.csv) do call :addId "%%~Na" "%%a"
goto :EOF
:addId
@echo off
for /f "usebackq delims=" %%b in (%2) do (
rem > #.csv echo ID,%%b
goto :next
)
:next
for /f "usebackq skip=1 delims=" %%b in (%2) do (
for /f "tokens=1 delims= " %%x in ("%~1") do set firstWord=%%x
>> #.csv echo !firstWord!,%%b
)
move #.csv %2