【问题标题】:I need help writing this batch script我需要帮助编写这个批处理脚本
【发布时间】:2013-02-03 05:34:46
【问题描述】:

如果文件名以一个东西开头,我想让这个脚本执行另一个脚本,如果它以另一个东西开头,另一个脚本,如果它以其他任何东西开头,则继续执行其余代码。我希望它遍历文件夹中的所有文件并对此进行检查。我已经研究了一段时间,并且正在寻找一双新的眼睛,因为显然我似乎无法让它正常工作。任何帮助将不胜感激!

 :========================================================================================
:: purpose: 1. copy file(s) from the export dir (SOURCE_DIR) (ARCHIVE_DIR)
::          2. copy file(s) from the export dir (SOURCE_DIR) (TARGET_DIR)
::          3. once file(s) are processed delete them from the export dir (SOURCE_DIR)
::=======================================================================================
::      
@echo off
setlocal
:: Display the command line on the window's Title Bar
title %0 %1
set LOG_FILE="here.txt"
set SOURCE_DIR=here\there
set TARGET_DIR=here\nowHere
set ARCHIVE_DIR=here\oldStuffnThings
set FILE=FileStartingWithBlahBlergOrOther.docx


echo --------------------------------------------------------------------------------------------------------------------------------------- >> %LOG_FILE%
echo %DATE% %TIME% Starting file move >> %LOG_FILE%


if not exist "%SOURCE_DIR%%FILE%" (
  echo %DATE% %TIME% "%SOURCE_DIR%%FILE%" not found >> %LOG_FILE%
  echo %DATE% %TIME% no files to move so stopping >> %LOG_FILE%
  exit
)


FOR /R %completepath% %%G IN (FileStartingWithBLAH*) DO (
  call C:\otherScript1
)

FOR /R %completepath% %%G IN (FileStartingWithBLERG*) DO (
  call C:\otherScript2
)





:: one at a time copy files to archive, copy to dir, then delete from the export dir
FOR /R %SOURCE_DIR% %%G IN (%FILE%) DO (
echo %DATE% %TIME% %%G was found for processing >> %LOG_FILE%
XCOPY %%G "%ARCHIVE_DIR%"/Y 
echo %DATE% %TIME% %%G was archived status %ERRORLEVEL% >> %LOG_FILE% 
XCOPY %%G "%TARGET_DIR%"/Y 
echo %DATE% %TIME% %%G was copied to  dir status %ERRORLEVEL% >> %LOG_FILE%
del %%G
echo %DATE% %TIME% %%G was deleted from the export dir status %ERRORLEVEL% >> %LOG_FILE%
)

rem set err_code=%errorlevel%
rem if %err_code% NEQ 0 (
rem    echo %DATE% %TIME% **ERROR moving files %err_code% >> %LOG_FILE%
rem    exit     
rem )
rem echo %DATE% %TIME% File(s) moved successfully >> %LOG_FILE%

rem echo %DATE% %TIME% Process Complete >> %LOG_FILE%

【问题讨论】:

  • 你在帖子中遗漏了问题......只有你正在尝试做的......考虑删除echo off,看看你是否可以让你的脚本输出更有意义......然后添加您对帖子的脚本有什么问题。
  • 请编辑您的问题并使标题有意义。 “我需要帮助”对于试图找到问题解决方案的未来用户没有用处;它作为搜索结果绝对没有任何意义。它也没有告诉我们您遇到的问题或您的问题可能是什么。此外,如果您不告诉我们“不工作”是什么意思,那么说“它不工作”也无济于事。我们无法从我们所在的位置看到您的屏幕或读懂您的想法,因此您需要向我们提供帮助您所需的信息。谢谢。

标签: if-statement for-loop batch-file switch-statement


【解决方案1】:

一个问题是你必须在SOURCE_DIR=here\there 后面加上一个反斜杠,否则它会寻找here\thereFileStartingWithBlahBlergOrOther.docx

【讨论】:

  • 它在执行其中一个被调用的脚本后停止。此外,它似乎忽略了第 2 次调用,只执行底部部分。
  • 删除回显后看到什么,%completepath% 是否已定义?是否有任何 FileStartingWithBLAH*?如果在脚本处停止,脚本中也可能存在问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 2018-11-06
相关资源
最近更新 更多