Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在另一批中执行批处理文件_Windows_Batch File_Command Line - Fatal编程技术网

Windows 在另一批中执行批处理文件

Windows 在另一批中执行批处理文件,windows,batch-file,command-line,Windows,Batch File,Command Line,我在这里的语法肯定是错误的,但我想做的基本上是运行一个起始批处理文件,它允许我将目录中的所有文件名(即.txt文件)传递到另一个批处理文件中,外部批处理文件将向用户打印文件名。如果这很重要的话,我也在MS-DOS中运行 这就是我到目前为止所做的: 短棒 @ECHO OFF FOR %%P IN (*.TXT) DO EXTERNAL "%%P" FOR %%P IN (*.TXT) DO CALL EXTERNAL %%P 外部。蝙蝠 @ECHO OFF PRINT "%~1" 出于某种原

我在这里的语法肯定是错误的,但我想做的基本上是运行一个起始批处理文件,它允许我将目录中的所有文件名(即.txt文件)传递到另一个批处理文件中,外部批处理文件将向用户打印文件名。如果这很重要的话,我也在MS-DOS中运行

这就是我到目前为止所做的:

短棒

@ECHO OFF
FOR %%P IN (*.TXT) DO EXTERNAL "%%P"
FOR %%P IN (*.TXT) DO CALL EXTERNAL %%P
外部。蝙蝠

@ECHO OFF
PRINT "%~1"

出于某种原因,我在运行start.bat时遇到语法错误,如果您希望external.bat返回控件,则必须执行以下操作

for %%P in (*.TXT) do call external.bat %%P

你可能把百分比数弄错了。已经有一段时间了。

您需要在%%p so external%%p周围加引号。这意味着external可以用引号将其读入%1

在外部,它是%1而不是%%p。因此类型是%%1。此外,还需要引号,以便type可以找到文件。平铺删除引号,以便以已知格式的字符串开始

在这种情况下不需要调用,因为调用的是external.bat而不是直接调用您的bat

您的批处理与我所说的更改一起工作。但是你不会发布你的代码

C:\Users\David Candy>a

C:\Users\David Candy>FOR %P IN (*.bat) DO B "%P"

C:\Users\David Candy>B "cmdline.bat"

C:\Users\David Candy>TYPE "cmdline.bat"
echo %~dpnx0

C:\Users\David Candy>B "delstack.bat"

C:\Users\David Candy>TYPE "delstack.bat"
del "%userprofile%\appdata\*gravatar*.*" /s
del "%userprofile%\appdata\*stackoverflow*.*" /s
del "%userprofile%\appdata\*adzerk*.*" /s
del "%userprofile%\appdata\*stack*.*" /s
del "%userprofile%\appdata\*google-analytics*.*" /s
del "%userprofile%\appdata\*quantserve*.*" /s
del "%userprofile%\appdata\*scorecardresearch*.*" /s
del "%userprofile%\appdata\*adzerk*.*" /s
del "%userprofile%\appdata\*facebook*.*" /s
del "%userprofile%\appdata\*sstatic*.*" /s
del "%userprofile%\appdata\*static*.*" /s


C:\Users\David Candy>B "nytdelete.bat"

C:\Users\David Candy>TYPE "nytdelete.bat"
del "C:\Users\David Candy\AppData\*nytimes*.*" /s

C:\Users\David Candy>B "sdk.bat"

C:\Users\David Candy>TYPE "sdk.bat"
cd /d C:\Program Files\Microsoft SDKs\Windows\v6.0\Include

C:\Users\David Candy>B "sdksearch.bat"

C:\Users\David Candy>TYPE "sdksearch.bat"
cd /d C:\Program Files\Microsoft SDKs\Windows\v6.0\Include
 *.hstr /i /c:"0xD0000022"

C:\Users\David Candy>B "SearchReplace.bat"

C:\Users\David Candy>TYPE "SearchReplace.bat"
@echo off &setlocal
set search=%1
set replace=%2
set Textfile=Input.txt
set newfile=Input.txt
(for /f "delims=" %%i in (%textfile%) do (
    set "line=%%i"
    setlocal enabledelayedexpansion
    set "line=!line:%search%=%replace%!"
    echo(!line!
    endlocal
))>"%newfile%"
del %textfile%
rename %newfile%  %textfile%

C:\Users\David Candy>B "sysdir.bat"

C:\Users\David Candy>TYPE "sysdir.bat"
cd /d c:\windows\system32

C:\Users\David Candy>B "windir.bat"

C:\Users\David Candy>TYPE "windir.bat"
cd /d c:\windows

C:\Users\David Candy>
@回音 对于*.TXT中的%%P,请调用外部%%P 或

@回音 对于*.TXT中的%%P,请启动外部%%P 第一个进程将串行执行外部进程,等待外部进程完成一个进程,然后再继续执行下一个进程。第二个wil尝试并行运行所有

问题是内置start命令的要求-第一个带引号的字符串用作窗口标题,因此需要为其提供一个虚拟标题,并且不能使用start.bat作为文件名,因为start是内置的

如果您的external.bat像您指出的那样简单,那么为什么不直接使用它呢

@回音 对于*.TXT中的%%P,请打印%%P
过于简单化往往掩盖了其他问题

我得到的许多答案都过于复杂。我设法弄明白了:

交换蝙蝠

@ECHO OFF
ECHO %1
短棒

@ECHO OFF
FOR %%P IN (*.TXT) DO EXTERNAL "%%P"
FOR %%P IN (*.TXT) DO CALL EXTERNAL %%P

您的call命令有所帮助,但现在我得到了目录中每个文本文件的“未找到文件-%P”。谢谢,这似乎输出了文件名,但它们显示为参数格式不正确-text.txt仍然存在与我提到的相同问题。获取参数格式不正确。我拍摄了一些屏幕截图。我需要呼叫命令。否则,它只拾取第一个文本文件。当我添加波浪形块时,所有输出都是“参数格式不正确-%1~”,它在这里键入所有文件而不使用调用。我怀疑当你的命令正确时,不需要调用。我也在MS-DOS中运行-不,你不是。MS-DOS已经灭绝了几十年了。你可能是指Windows中的命令行不,我实际上是在虚拟机中运行MS-DOS。