Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file batch命令备份文件夹并使用时间戳重命名(';t在XP power user权限下工作_Batch File_Timestamp_Windows Xp_Xcopy - Fatal编程技术网

Batch file batch命令备份文件夹并使用时间戳重命名(';t在XP power user权限下工作

Batch file batch命令备份文件夹并使用时间戳重命名(';t在XP power user权限下工作,batch-file,timestamp,windows-xp,xcopy,Batch File,Timestamp,Windows Xp,Xcopy,我已经在下面创建了一个批处理命令脚本,但它在具有超级用户权限的Windows XP中不起作用 @echo off for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a set YYYY=%dt:~0,4% set MM=%dt:~4,2% set DD=%dt:~6,2% set HH=%dt:~8,2% set Min=%dt:~10,2% set Sec=%dt:~12,2% set

我已经在下面创建了一个批处理命令脚本,但它在具有超级用户权限的Windows XP中不起作用

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%

set stamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%

xcopy "D:\secure" "D:\secure_bak\bak - %stamp%" /i
我得到一个错误如下

注册mof文件失败。 只有管理员组成员才能使用WMIC.EXE。 原因:Win32错误:访问被拒绝

请建议WMIC.EXE的替代方案,以便我也可以在XP中通过超级用户权限使用它

提前感谢你的帮助


关于,

此脚本提供可靠的变量,但在批处理文件中使用VBS:

  :: date time using WSH/VBS
  :: datetime.bat V4.2
  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  ::
  :: This uses Windows Scripting Host to set variables to
  :: the current date/time/day/day_number/week_of_year etc
  :: for Win9x/ME/NT/W2K/XP/Vista/Win7/Win8 etc
  :: Thanks go to Todd Vargo for his scripting
  ::
  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  @echo off
  set TmpFile="%temp%.\tmp.vbs"
  echo> %TmpFile% n=Now
  echo>>%TmpFile% With WScript
  echo>>%TmpFile% .Echo "set m1="   + monthname(month(n), true)
  echo>>%TmpFile% .Echo "set m2="   + monthname(month(n), false)
  echo>>%TmpFile% .Echo "set woy="  + CStr(datepart("ww", n))
  echo>>%TmpFile% .Echo "set year=" + CStr(Year(n))
  echo>>%TmpFile% .Echo "set yr="   + Right(Year(n),2)
  echo>>%TmpFile% .Echo "set month="+ Right(100+Month(n),2)
  echo>>%TmpFile% .Echo "set day="  + Right(100+Day(n),2)
  echo>>%TmpFile% .Echo "set hour=" + Right(100+Hour(n),2)
  echo>>%TmpFile% .Echo "set min="  + Right(100+Minute(n),2)
  echo>>%TmpFile% .Echo "set sec="  + Right(100+Second(n),2)
  echo>>%TmpFile% .Echo "set dow="  + WeekDayName(Weekday(n),1)
  echo>>%TmpFile% .Echo "set dow2=" + WeekDayName(Weekday(n))
  echo>>%TmpFile% .Echo "set iso="  + CStr(1 + Int(n-2) mod 7)
  echo>>%TmpFile% .Echo "set iso2=" + CStr(Weekday(n,2))
  echo>>%TmpFile% End With
  cscript //nologo "%temp%.\tmp.vbs" > "%temp%.\tmp.bat"
  call "%temp%.\tmp.bat"
  del  "%temp%.\tmp.bat"
  del  %TmpFile%
  set TmpFile=
  set stamp=%year%-%month%-%day%.%hour%_%min%_%sec%

  if not "%~1"=="" goto :EOF

  echo The year  is "%year%" or "%yr%"
  echo The month is "%month%" "%m1%" "%m2%"
  echo The day   is "%day%" "%dow%" "%dow2%"
  echo.
  echo ISO8601 Day-Of-Week number is "%iso%" and week of year is: "%woy%"

  echo.
  echo The time in hh:mm:ss is "%hour%:%min%:%sec%"
  echo The hour   is "%hour%"
  echo The minute is "%min%"
  echo The second is "%sec%"
  echo.

  echo The date and time stamp is "%stamp%"
  echo.
  echo date A yyyymmdd "%year%%month%%day%"
  echo date B mmddyyyy "%month%%day%%year%"
  echo date C ddmmyyyy "%day%%month%%year%"
  echo date D yymmdd   "%yr%%month%%day%"
  echo date E mmddyy   "%month%%day%%yr%"
  echo date F ddmmyy   "%day%%month%%yr%"
  pause
  :: datetime.bat
  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

我没有足够的声誉来评论,这就是为什么我把答案而不是评论

添加到Foxdrive的回答中

日期/时间提取代码是可重用的,所以我更喜欢将这些例程存储在单独的文件中,以便从其他批处理中调用

而且,最近我学会了一些有用的技术

这是我在2008r2下使用的真实批次的一部分:

for /f %%a in ('wmic path win32_localtime get minute /format:list ^| findstr "="') do (set %%a)
嗯,它使用被禁止的WMIC,但我提到它还有另一个原因。注意提取命令中的(设置%%a)部分。WMIC with/format:list返回配对列表,如minute=57,我们使用这些配对作为参数设置命令,使WMIC的结果成为环境变量的名称。 人们可以将这种技术应用到Foxdrive的方法中。应该创建.vbs文件,生成类似的变量列表

rem GetDateTime.vbs
rem Based on foxdrive//SE code
n=Now
With WScript
 .Echo "YYYY=" + CStr(Year(n))
 .Echo "MM="+ Right(100+Month(n),2)
 .Echo "DD="  + Right(100+Day(n),2)
 .Echo "HH=" + Right(100+Hour(n),2)
 .Echo "Min="  + Right(100+Minute(n),2)
 .Echo "Sec="  + Right(100+Second(n),2)
End With
然后,在主批中,我们使用for运算符(可能需要指向.vbs位置的路径):

仅此而已:在这之后,对于
,我们将根据需要设置六个变量

另外,再次感谢foxdrive提供的另一个提示:在小数字上加100,以便在需要时加前导零。我觉得自己很惭愧,因为我用了史前的如果

if /i %month% lss 10 (
set mon1=0%month%
) else (
set mon1=%month%
)
if /i %month% lss 10 (
set mon1=0%month%
) else (
set mon1=%month%
)