请帮忙!我有一个批处理文件,执行以下任务: 1)重命名计数器字段 2)创建两个变量,稍后将用于重命名两个单独的文件 3)打开SQL * Plus并启动Oracle脚本,启动两个单独的存储过程 4)从两个过程中移动并重命名后续的假脱机文件
第一个假脱机文件移动并重命名没有问题。第二个(具有更加劳动密集型的工作)不会移动或重命名。我尝试添加TIMEOUT并确保文件夹具有正确的权限。依然没有。我的批处理文件代码和Oracle脚本附在下面。
批处理文件
@echo off
setlocal enabledelayedexpansion
set filename="E:\Transfers\XXX\prod_directory\pullsched_seq2.dat"
if exist "%filename%" del "%filename%"
for /f %%A in (E:\Transfers\XXX\prod_directory\pullsched_seq.dat) do (
set num=%%A
set /a num+=1
echo !num!>>"%filename%"
)
set newnum=!num!
set newproc=schedule%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%%TIME:~0,2%%TIME:~3,2%.dat
del "E:\Transfers\XXX\prod_directory\pullsched_seq.dat"
rename "E:\Transfers\XXX\prod_directory\pullsched_seq2.dat" "pullsched_seq.dat"
rem start Oracle Script
E:\oracle\product\10.2.0\db_1\BIN\SQLPLUSW.EXE
logon/password @database @C:\Schedule\pullschedule0325.sql
move C:\Schedule\schedule_today.txt E:\Transfers\ftpadmin\archive\schedule\%newnum%
(this move works)
move C:\Schedule\schedule_today2.txt E:\Transfers\XXX\output_directory\%newproc%
(this one does not)
Oracle脚本(@C:\ Schedule \ pullsched0325.sql)
rem @C:\Schedule\pullsched0325.sql
set term off
set feedback off
set verify off
set echo off
set heading off
set serveroutput on size 1000000
set linesize 174
spool C:\Schedule\schedule_today.txt
execute SBT_SCHEDULE_LOAD_DATA
spool C:\Schedule\schedule_today2.txt
execute SBT_SCHEDULE_LOAD_SCHEDULES
exit
/
答案 0 :(得分:0)
我建议你只是
echo +%newproc%+
在set
之后。 +
只是为了显示任何空格 - 没有魔法。
如果结果字符串可能包含空格,则
move C:\Schedule\schedule_today2.txt "E:\Transfers\XXX\output_directory\%newproc%"
应该解决问题。
OR
set "newproc=%newproc: =0%"
move C:\Schedule\schedule_today2.txt "E:\Transfers\XXX\output_directory\%newproc%"
应该更加理解 - 用newproc
替换0
中的任何空格。
如果您的格式不正确 - 例如您使用带有小时数的抑制前导空格,则可能是newproc
中的结果字符串包含无效的文件名字符,如:
。< / p>
全部取决于您的日期/时间格式的详细信息。
当然,您的目标目录"E:\Transfers\XXX\output_directory\"
存在......?