我通常通过给出批处理命令 %~dp0 来组合多个 csv 文件来获取当前工作目录。
但是我在获取当前工作目录时遇到了与号(&)符号,这使得批处理文件在“&”之后中断,表示&之后的路径不被识别为内部或外部命令。
你们中的任何人都可以帮助我修改下面的脚本来识别 & 并将其替换为 ^& (因为这可以转义 & 并运行批处理文件)。感谢您的任何建议;
这是我的代码:
@echo off
ECHO Set working directory
pushd %~dp0 - How to escape & in this line???
ECHO Deleting existing combined file
del combined.csv
setlocal ENABLEDELAYEDEXPANSION
REM set count to 1
set cnt=1
REM for each file that matches *.csv
for %%i in (*.csv) do (
REM if count is 1 it's the first time running
if !cnt!==1 (
REM push the entire file complete with header into combined.csv - this will also create combined.csv
for /f "delims=" %%j in ('type "%%i"') do echo %%j >> combined.csv
REM otherwise, make sure we're not working with the combined file and
) else if %%i NEQ combined.csv (
REM push the file without the header into combined.csv
for /f "skip=1 delims=" %%j in ('type "%%i"') do echo %%j >> combined.csv
)
REM increment count by 1
set /a cnt+=1
)
cmd \k
将引号括起来%~dp0
应该足够了:
...
pushd "%~dp0"
...
顺便说一句,我不明白你为什么使用pushd
。你不popd
在你的代码中的任何地方pushd
似乎没用。如果我明白的话ECHO Set working directory
正确,你应该更换pushd
with CD %~dp0
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)