批处理脚本(递归文件移动)-移动后停止

时间:2019-01-24 01:56:39

标签: batch-file scripting windows-scripting

所以我对脚本没有任何经验,所以只是想一想就知道,所以有点卡住了。因此,使用以下脚本,我试图基本上搜索一组文件夹,并且在每个文件夹中都有两个文件。它们彼此保持配对(用于调用外部应用程序以一起运行它们)。所以我要让他们移动,然后尝试调用外部应用程序等等。在另一个应用程序运行后,我也不得不删除这两个文件。问题是在第二个文件移动之后,我无法在其后放置任何其他代码来执行它。例如,我尝试使用两个测试文件。如果我添加命令以在运行之后执行外部应用程序,这就是我要执行的操作....它会移动文件,但基本上将第一个文件移动两次,并在有意义的情况下将其用作两个文件。因此,有文件A和文件b。我最终得到两个文件A,其中只有一个最终名为文件b。如果我在移动后注释了任何代码,则效果很好。

         ExpansionTile(
                        title: Text("Expandable"),
                        children: <Widget>[
                          SizedBox(
                            height: 200.0,
                            child: GridView.count(
                              scrollDirection: Axis.horizontal,
                              crossAxisCount: 2,
                              children: <Widget>[
                                RawChip(label: Text("Hello")),
                                RawChip(label: Text("World")),
                              ],
                            ),
                          ),
                        ],
                      ),

我知道有些人被注释掉了,但这只是从移动内容并试图使其正常工作而来。基本上完成这两个步骤之后,我将调用一个外部应用程序,然后将其运行,然后再返回,我将使用此脚本删除文件,然后继续处理下一个文件夹/文件集。

1 个答案:

答案 0 :(得分:0)

调用CALL语句后返回的方式可能有问题。在子例程末尾使用EXIT / R或GOTO:EOF将使您返回进行调用的位置。

我会尝试这样的事情:

编辑:固定EXIT / R为EXIT / B

EDIT2:在第二个SUB中添加了EXE

```
@ECHO ON
SET Loc1Dir=C:\Users\*****\Desktop\temp
SET Loc2Dir=S:\shared\*****\*****\Input\Run\Working_Folder
CD /D  "%Loc1Dir%"
FOR /R %%F IN ("*.STMT*") DO CALL :CopyFile %%~F
FOR /R %%I IN ("*.CARD*") DO CALL :CopyFile2 %%~I

:CopyFile
SET copyfname=%~1
SET fname=driver
ECHO F | XCOPY  /Y /F "%copyfname%" "%Loc2Dir%\%fname%"
foo.exe -argument
EXIT /B

:CopyFile2
SET copyfname2=%~1
SET fname2=card
ECHO F | XCOPY /Y /F "%copyfname2%" "%Loc2Dir%\%fname2%"
EXIT /B

:EOF
```