通过DOS命令将文件另存为当前文件夹名称吗?

问题描述 投票:0回答:2

我要使用文件夹名称保存合并的文件,

copy *.* A.txt %CD%.txt

但是我收到语法错误“命令不正确”。

windows batch-file cmd dos
2个回答
0
投票
我假设您想在WINDOWS 2000或更高版本上执行此操作(因此询问的是CMD而不是DOS

正如我的评论,也许您打算将一个目录中的所有文本文件合并到其上方目录中的单个文件。

这很简单Copy *.txt "%CD%.txt"

但是您可能没有权限访问上述文件夹,也没有写权限,或者您可能希望将其与其他文本文件写入同一文件夹,或者完全写入一个单独的文件夹。

在这种情况下,您需要使用简单的FOR循环,或者先使用copy然后再使用move文件。

复制到与现有文本文件相同的目录:

FOR %_ IN ("%CD%") DO @( COPY *.txt "%~n_.txt" )

复制到另一个任意目录,但以它们来自的目录命名:

FOR %_ IN ("%CD%") DO @( COPY *.txt "C:\Path\To\Folder\Where_you_Want_These\%~n_.txt" )


0
投票
基于我对您要执行的操作的最佳猜测,可以A.txt

Copy *.* A.txt

然后文件:

Rename A.txt "YourNewName.txt"

但是,您可能可以同时完成两个任务。

使用会话的当前目录名称执行此操作:

For /F "EOL=|Delims=" %I In ("%CD%")Do @Copy *.* "%~nxI.txt"

 

如果您在中工作,请使用以下任一方法:


@For /F "EOL=|Delims=" %%I In ("%CD%")Do @Copy *.* "%%~nxI.txt"

@For /F "EOL=|Delims=" %%I In ("%__CD__%.")Do @Copy *.* "%%~nxI.txt"

要在脚本中使用当前目录的名称。

或者如果要使用保存正在运行的批处理文件的目录的名称,请尝试:

@For /F "EOL=|Delims=" %%I In ("%~dp0.")Do @Copy *.* "%%~nxI.txt"

© www.soinside.com 2019 - 2024. All rights reserved.