我在右键“发送到”菜单中添加了一个批处理文件,该命令会在当前目录中打开命令提示符。从批处理文件中使用该命令时,无法正确执行该文件夹及其子文件夹中的所有 .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