【发布时间】:2012-06-12 04:10:13
【问题描述】:
我正在编写一个批处理文件,用于查找并执行所有放在它上面的目录中的所有 update.bat 文件。
这里的问题是我希望参数(即目录的路径)按名称排序,但事实证明它们是按修改日期排序的。
这是 Windows (Windows 7) 的默认行为吗?有什么解决这个问题的建议吗?
这是我的批处理脚本:
@echo off
Setlocal EnableDelayedExpansion
if [%1]==[] goto :no_update_dropped
set LOG_FILE=update_log.txt
echo You are about to run these updates:
for %%G IN (%*) do (
if exist %%~sG\NUL echo %%G
)
pause
for %%G IN (%*) do (
if exist %%G\NUL (
if exist %%G\update.bat (
call %%G\update.bat %LOG_FILE%
) else (
echo No update.bat found in %%G.
goto :no_batch_found
)
)
)
goto :success
:no_update_dropped
echo NO UPDATE FOLDER FOUND
echo Drag and drop one or more update folder to run.
goto :exit
:no_batch_found
echo UPDATE NOT COMPLETED!
goto exit
:success
echo all updated has been run successfully
goto :exit
:exit
pause
最好的问候。
【问题讨论】:
-
文件夹出现的顺序由调用批处理文件的人(或其他人)控制。您的批处理脚本与订单无关。如果需要,您可以对批处理中的参数列表进行排序,但也许调用者应该以正确的顺序传递它们。
-
不过,我确实对其进行了测试。我选择所有文件夹 dir1, dir2, dir3, dir4 并放到批处理文件中,参数的顺序是 dir4, dir1, dir2, dir3。