我目前正在撰写帮助台批处理脚本,目前我遇到了一个问题。我希望我们的服务台人员能够被提示选择用户配置文件,一旦他们选择了用户配置文件,脚本就会将配置文件文件夹复制到指定的目录。
我遇到的问题是为每个c:\ users子文件夹分配唯一变量,这些子文件夹本质上是配置文件名称。如果我可以将它们分配给变量,那么我可以创建一个引用变量的提示菜单。我是否有正确的开始?这是我将其转换为变量的代码。我怎样才能为每个子目录执行此操作?任何帮助将不胜感激。
@echo off
for /f "delims=|" %%f in ('dir /b c:\users\') do (set profvar=%%f%%)
非常感谢你的帮助。使用wmic可以更有效地实现这一目标吗?
答案 0 :(得分:1)
我认为这会做你要求的。
第一个循环使用变量VARCOUNT
作为计数器,并创建一个名为profvar#
的变量,其中#
是VARCOUNT
的值。
第二个循环从1循环到VARCOUNT
的值,并打印每个变量的值及其前面的数字。
SET /P SELPROF=...
行提示用户输入一个数字,最后一行显示所选的个人资料名称。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARCOUNT=0
FOR /F "delims=|" %%f in ('dir /b c:\users\') DO (
SET /A VARCOUNT+=1
SET profvar!VARCOUNT!=%%f)
ECHO --------------------------------------
FOR /L %%V IN (1,1,!VARCOUNT!) DO (
ECHO %%V - !profvar%%V!
)
ECHO --------------------------------------
SET /P SELPROF=Enter the number of the profile to copy:
ECHO Selected profile = !profvar%SELPROF%!
答案 1 :(得分:0)
这是最终的代码。它将复制一些关键系统信息,同时提示您将配置文件复制到指定目录。
echo off
echo Welcome: %username%
set /p usbpath= "Enter a copy path: "
echo Usb drive letter set to:%usbpath%
pushd %usbpath%
@echo off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
set mydir="syscollect_%computername%_%mydate%_%mytime%"
set profpath="user profile"
mkdir %mydir%
mkdir %profpath%
cd %mydir%
net start > running-services.txt
sc query > service-query.txt
Tasklist /v > tasklist.txt
nbtstat -s > nbtstat.txt
at > scheduledActiveTasks.txt
schtasks > scheduledtasks.txt
cd %mydir%
mkdir eventlogs
copy c:\windows\system32\winevt\Logs\*.* eventlogs
ipconfig /all > ipconfig.txt
systeminfo > systeminfo.txt
cmd.exe /c set > systemenv.txt
regedit /e regbackup.txt
wmic /output:bootconfig.txt bootconfig
wmic /output:activeprocesses.txt process get name, workingsetsize
wmic /output:Disk.txt /namespace:\\root\cimv2 path Win32_ComputerSystem get CurrentTimeZone, Description, Domain, TotalPhysicalMemory, Model, Name, UserName
wmic /output:ProgramList.txt product get name,version
cd %mydir%
mkdir profile
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARCOUNT=0
FOR /F "delims=|" %%f in ('dir /b c:\users\') DO (
SET /A VARCOUNT+=1
SET profvar!VARCOUNT!=%%f)
ECHO --------------------------------------
FOR /L %%V IN (1,1,!VARCOUNT!) DO (
ECHO %%V - !profvar%%V!
)
ECHO --------------------------------------
SET /P SELPROF=Enter the number of the profile to copy:
xcopy /e /y c:\users\!profvar%SELPROF%!\*.* %usbpath%\%mydir%\profile
popd