使用右键单击和批处理文件连接文本文件

使用右键单击和批处理文件连接文本文件

我在右键“发送到”菜单中添加了一个批处理文件,该命令会在当前目录中打开命令提示符。从批处理文件中使用该命令时,无法正确执行该文件夹及其子文件夹中的所有 .txt 文件(生成一个名为 output.txt 的 0 字节文件),但如果我在 cmd 提示符中输入该命令,则可以正常工作。

%~d1
cd "%~p1"
start cmd.exe /K 
"for %f in (*.txt) do type "%f" >> output.txt"

Windows 10。任何帮助都值得感激。谢谢。

编辑看这里,由于某种原因将元组加倍: https://stackoverflow.com/questions/11711569/windows-batch-file-concatenate-all-files-in-subdirectories

答案1

以下 .reg 和批处理文件是否有助于启动:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Run Batch script]
@="&Run text file concatenate"

[HKEY_CLASSES_ROOT\Directory\shell\Run Batch script\command]
@="\"E:\\menu.bat\" \"%1\""

批处理文件“E:\menu.bat”:

@ECHO OFF
cd  %*
forfiles /s /m *.txt /c "cmd /c type @path >> %*\output.txt

答案2

  • 批处理文件要求使用 for 变量时使用双倍百分号。
  • 在我看来,没有必要使用 cmd /k,
  • 你的命令没有递归到子目录
  • 您必须避免处理新生成的 output.txt 并在连续运行时(重新)初始化它。

将批次更改为如下内容:

@Echo off
Pushd "%~dp1"
Type Nul >output.txt
for /F "delims=" %%f in (
  ' Dir /B/S/A-D *.txt ^|find /v /i "output.txt" '
) do type "%%f" >> output.txt

相关内容