2013-07-12 3 views
0

Я продолжаю получать Отсутствует операнд Ошибка. Кажется, я не могу найти его, и я вижу новый набор глаз.Пакет: Мне нужны свежие глаза, чтобы увидеть, где ошибка

@echo off 

title Log Split And Backup 

rem dt = date 
rem tm = time 
rem wd = week day 
rem mh = month 
rem dy = day 
rem yr = year 
rem hh = hour 
rem mm = minute 
rem ss = second 
rem ms = milisecond 
rem gtr = greater than 
rem lss = less than 
rem equ = equal to 

echo Starting Log Split And Backup... 
ping 1.1.1.1 -n 1 -w 1500 >nul 
cls 
echo Log Split And Backup Has Started... 

:time 
set hh=%tm:~0,2% 
set mm=%tm:~3,2% 
set ss=%tm:~5,2% 
set ms=%tm:~7,2% 
goto date 

:date 
set dt=%date% 
set tm=%time% 
set wd=%dt:~0,3% 
set mh=%dt:~4,2% 
set dy=%dt:~6,2% 
set yr=%dt:~8,4% 
goto scheduletimes 

:scheduletimes 
:hour1 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% equ 6 goto minutes1 
goto hour2 
:minutes1 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% equ 0 goto seconds1 
goto hour2 
:seconds1 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% lss 10 goto day1 
goto hour2 
:hour2 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% equ 18 goto minutes2 
goto time 
:minutes2 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% equ 0 goto seconds2 
goto time 
:seconds2 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% lss 10 goto day2 
goto time 

:days 
:day1 
for %%i in (Mon) do (
    if "%wd%"=="%%i" goto mon1 
) 
for %%i in (Tue) do (
    if "%wd%"=="%%i" goto tue1 
) 
for %%i in (Wed) do (
    if "%wd%"=="%%i" goto wed1 
) 
for %%i in (Thu) do (
    if "%wd%"=="%%i" goto thu1 
) 
for %%i in (Fri) do (
    if "%wd%"=="%%i" goto fri1 
) 
for %%i in (Sat) do (
    if "%wd%"=="%%i" goto sat1 
) 
for %%i in (Sun) do (
    if "%wd%"=="%%i" goto sun1 
) 

:day2 
for %%i in (Mon) do (
    if "%wd%"=="%%i" goto mon2 
) 
for %%i in (Tue) do (
    if "%wd%"=="%%i" goto tue2 
) 
for %%i in (Wed) do (
    if "%wd%"=="%%i" goto wed2 
) 
for %%i in (Thu) do (
    if "%wd%"=="%%i" goto thu2 
) 
for %%i in (Fri) do (
    if "%wd%"=="%%i" goto fri2 
) 
for %%i in (Sat) do (
    if "%wd%"=="%%i" goto sat2 
) 
for %%i in (Sun) do (
    if "%wd%"=="%%i" goto sun2 
) 

:logsplitting 
:mon1 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\0-mon\server1.txt" /D /E /R /I /K /Y    
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:tue1 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\1-tue\server1.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:wed1 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\2-wed\server1.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:thu1 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\3-thu\server1.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:fri1 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\4-fri\server1.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:sat1 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\5-sat\server1.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:sun1 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\6-sun\server1.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:mon2 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\0-mon\server2.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:tue2 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\1-tue\server2.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:wed2 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\2-wed\server2.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:thu2 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\3-thu\server2.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:fri2 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\4-fri\server2.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:sat2 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\5-sat\server2.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 
:sun2 
@echo %date% 
@echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping 1.1.1.1 -n 1 -w 3000 >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\6-sun\server2.txt" /D /E /R /I /K /Y 
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 

Благодарим всех, кто просмотрел весь этот код и особенно поблагодарил человека, который нашел ошибку для меня.

ответ

0

Если код выше ваша полная программа, то tm переменная не была назначена до его использования. Я думаю, что эта линия:

set tm=%time% 

должен быть перемещен ниже :time этикетки ...

+0

Большое спасибо. Да, я слепой. У меня есть set 'tm =% time%' по дате. Я переписал и переключил секцию времени и дату вокруг, и именно это должно было вызвать ошибку. Я новый новый набор глаз мог исправить мою проблему. –

+0

Это фиксировало общие ошибки ** Missing Operand **, но теперь, похоже, есть еще один, где после выполнения команды в то время и секунды доходит за окном, я все равно получаю ** Missing Operand **. Я сузил его до этой строки: ': minutes1 for/f" tokens = 1 * delims = 0 "%% a in (" $ 0% mm% ") установить/a MM = %% b если% MM% equ 0 0 секунд 0 goto hour2' (это отличается от того, что я сделал опубликованный код неработоспособным для людей, которые не знают, как их кодировать, чтобы они не могли его украсть). Согласно журналу, он не устанавливает ** ММ ** до **% мм% **, так как ** ММ ** не установлен, он переплевывает эту ошибку. –

+0

Вопрос по этой новой ошибке можно найти в [Ссылка] (http://stackoverflow.com/questions/17621363/batch-during-my-code-loop-it-stops-setting-a-variable-all-help приветственный). Это дает вам дополнительную информацию об ошибке. –

-1

Ну, вы можете увидеть свою ошибку, используя отладочную ошибку. Пожалуйста следующим образом:

> bash -x script1.sh 

Пожалуйста, обратитесь к следующей ссылке для более детальной информации.

http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html

+0

Я не думаю, что баш может отладить пакетный файл ;-) – Aacini

+0

От взгляда вещей это Защита бесполезное, так как это не кажется, что для пакетного файла. –

0

В сущности, этот код должен заменить повторяющийся код, а также обеспечить набор надежных времени и даты переменных (ноль с помощью Wmic (XP Pro и выше).

Использует переменные %var% и %server% в процедуре xcopy.

Ваша задача :scheduletimes выглядит неаккуратно, потому что вы, похоже, устанавливаете и перезапускаете переменную %hh% и проверяете одну и ту же переменную снова и снова.

Если вы предоставите информацию о расписании, то это также может быть упрощено.

@echo off 

title Log Split And Backup 

rem wd = week day 
rem mh = month 
rem dy = day 
rem yr = year 
rem hh = hour 
rem mm = minute 
rem ss = second 
rem ms = milisecond 
rem gtr = greater than 
rem lss = less than 
rem equ = equal to 

echo Starting Log Split And Backup... 
ping -n 1 localhost >nul 
cls 
echo Log Split And Backup Has Started... 

:time 
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a 
set Yr=%dt:~0,4% 
set Mh=%dt:~4,2% 
set Dy=%dt:~6,2% 
set HH=%dt:~8,2% 
set MM=%dt:~10,2% 
set SS=%dt:~12,2% 
set MS=%dt:~15,2% 

:date 
set dt=%date% 
set wd=%dt:~0,3% 


:scheduletimes 
:hour1 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% equ 6 goto minutes1 
goto hour2 
:minutes1 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% equ 0 goto seconds1 
goto hour2 
:seconds1 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% lss 10 set server=server1 
goto hour2 
:hour2 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% equ 18 goto minutes2 
goto time 
:minutes2 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% equ 0 goto seconds2 
goto time 
:seconds2 
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a HH=%%b 
if %HH% lss 10 set server=server2 

    if "%wd%"=="MON" set var=0-%wd% 
    if "%wd%"=="TUE" set var=1-%wd% 
    if "%wd%"=="WED" set var=2-%wd% 
    if "%wd%"=="THU" set var=3-%wd% 
    if "%wd%"=="FRI" set var=4-%wd% 
    if "%wd%"=="SAT" set var=5-%wd% 
    if "%wd%"=="SUN" set var=6-%wd% 

:logsplitting 

echo %date% 
echo %time% 
echo Starting the 12hr Log Split and Log Backup... 
ping -n 1 localhost >nul 
xcopy "C:\Users\Kratos\Desktop\MC Server\server.txt" "C:\Users\Kratos\Dropbox\Minecraft Backups\Logs\%var%\%server%.txt" /D /E /R /I /K /Y    
del "C:\Users\Kratos\Desktop\MC Server\server.txt" 
echo Finished Log Split and Log Backup... 
goto time 

 Смежные вопросы

  • Нет связанных вопросов^_^