Capture.bat Code: @echo off echo %%~1 = %~1 echo %%~f1 = %~f1 echo %%~d1 = %~d1 echo %%~p1 = %~p1 echo %%~n1 = %~n1 echo %%~x1 = %~x1 echo %%~s1 = %~s1 echo %%~a1 = %~a1 echo %%~t1 = %~t1 echo %%~z1 = %~z1 echo %%~$PATHATH:1 = %~$PATHATH:1 echo %%~dp1 = %~dp1 echo %%~nx1 = %~nx1 echo %%~dp$PATH:1 = %~dp$PATH:1 echo %%~ftza1 = %~ftza1 pause Drop a file ioto Capture.bat and see what happens. (Yes, onto. Do not OPEN the batch but drop the file into the batch file and it will open.) Spoiler Code: %~1 = C:\Users\Humphrey\Desktop\FindMeAGoodOnePC.exe %~f1 = C:\Users\Humphrey\Desktop\FindMeAGoodOnePC.exe %~d1 = C: %~p1 = \Users\Humphrey\Desktop\ %~n1 = FindMeAGoodOnePC %~x1 = .exe %~s1 = C:\Users\Humphrey\Desktop\FINDME~1.EXE %~a1 = --a------ %~t1 = 05/23/2012 02:10 PM %~z1 = 8961024 %~$PATHATH:1 = %~dp1 = C:\Users\Humphrey\Desktop\ %~nx1 = FindMeAGoodOnePC.exe %~dp$PATH:1 = C:\Users\Humphrey\Desktop\ %~ftza1 = --a------ 05/23/2012 02:10 PM 8961024 C:\Users\Humphrey\Desktop\FindMeAGoodOnePC.exe Press any key to continue . . .
Hi all, I'd like to integrate all Win XP Updates in Win XP SP3 x86 .ISO Source in case that I re-install Windows " the fresh installation ". Can anyone please help me write a .CMD or .BAT for integrating updates ? Thanks in advance.
integrator: http://cpu.reboot.pro/download/file.php?id=907 updatepack: http://www.ryanvm.net/forum/viewtopic.php?t=7184
I need to detect the unknown newly added Index number with DOS command. Like Before.txt Code: 7 8 9 After.txt Code: 6 7 8 9 Could you please? Thanks. Edit: Solved Batch, comparing two files and write differences to another file Result.txt Code: 6
I have many files in a folder. Each file I want to split up into a .rar-file, and the first one has to be a .sfx so when its pressed it will unpack the other (.rar) and give me my original file. This means I have 10 files in a folder, I want winrar to pack each file (one file at the time) into 400MB size rar (in 10 different folders), and the first file(in each folder) has to be a .sfx To do this job i want to use batch, but I dont know the command for it. Hope there is someone here that can help me out.
please help me finding error & executing this ( i have dism.exe,imagex.exe and oscdimg.exe in the same folder with cmd Script and also have Windows AIK installed ) Code: cd /d %~dp0 CLS @ECHO OFF SET DVDSOURCE=%systemdrive%\7MSDN SET MOUNTDIR=%systemdrive%\mount SET SUBMOUNTDIR=%systemdrive%\mount2 SET FirstUXRes=%systemdrive%\FirstUXRes SET STORE=D:\7ISO\ISO SET TRASH=c:\temp SET MOUNTNUM= :: this startup portion have problems only ( i have dism.exe,imagex.exe and oscdimg.exe in the same folder :: with cmd Script and also have Windows AIK installed SET DISM=%systemdrive%\Program Files\Windows AIK\Tools\Servicing\Dism.exe SET imagex=%systemdrive%\Program Files\Windows AIK\Tools\amd64\imagex.exe SET oscdimg=%systemdrive%\Program Files\Windows AIK\Tools\amd64\oscdimg.exe SET DISMFLAG=0 IF NOT EXIST "%systemdrive%\Program Files\Windows AIK\Tools\Servicing\Dism.exe" IF %DISMFLAG%==0 SET /p DISM=Path to WAIK DISM.EXE:%~dp0DISM.EXE IF EXIST %DISM% SET /p DISM=%DISM% SET imagexFLAG=0 IF NOT EXIST "%systemdrive%\Program Files\Windows AIK\Tools\amd64\imagex.exe" IF %imagexFLAG%==0 SET /p imagex=Path to WAIK imagex.EXE:%~dp0imagex.exe IF EXIST %imagex% SET imagex=%imagex% SET oscdimgFLAG=0 IF NOT EXIST "%systemdrive%\Program Files\Windows AIK\Tools\amd64\oscdimg.exe" IF %oscdimgFLAG%==0 SET /p oscdimg=Path to WAIK oscdimg.EXE:%~dp0oscdimg.exe IF EXIST %oscdimg% SET oscdimg=%oscdimg% CHOICE /C abcd /n /m "Select a for Update only,select b for customization only ,select c for After Update & customization,select d for Rt7Lite customization"
You have AIK installed. Why waste your time & confusion checking & pointing to these tools? Use the Deployment Tools Command Prompt. If you type set, you'll see paths are already setup for you & your platform...
i want those code to be universal & i don't have WAIK installed always. so i need to solve this. Thanks for anybody's help.
Help please ... I need to query or export the key, to get Source value, in order not to tamper users existent TAP-Windows. Code: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%SystemRoot%/system32/DRIVERS/tap0901.sys] "Source"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\ 00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\ 72,00,69,00,76,00,65,00,72,00,53,00,74,00,6f,00,72,00,65,00,5c,00,46,00,69,\ 00,6c,00,65,00,52,00,65,00,70,00,6f,00,73,00,69,00,74,00,6f,00,72,00,79,00,\ 5c,00,74,00,61,00,70,00,30,00,39,00,30,00,31,00,2e,00,69,00,6e,00,66,00,5f,\ 00,61,00,6d,00,64,00,36,00,34,00,5f,00,35,00,61,00,31,00,66,00,65,00,63,00,\ 32,00,66,00,62,00,62,00,63,00,63,00,65,00,66,00,63,00,63,00,5c,00,74,00,61,\ 00,70,00,30,00,39,00,30,00,31,00,2e,00,73,00,79,00,73,00,00,00 but it just won't. Code: ERROR: The system was unable to find the specified registry key or value. And how to export hex in readable text? Code: %SystemRoot%\System32\DriverStore\FileRepository\tap0901.inf_amd64_5a1fec2fbbccefcc\tap0901.sys Thanks.
@xinso i assume you haven't added the extra percent mark (within a batch file) query the value: Code: reg query "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%%SystemRoot%%/system32/DRIVERS/tap0901.sys" /v "Source" append to a variable: EDIT 2: Code: for /f "tokens=2* delims= " %%A in ('reg query "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%%SystemRoot%%/system32/DRIVERS/tap0901.sys" /v "Source"') do set "val=%%~B" Question: why is the last part (/system32/DRIVERS/tap0901.sys) delimited with a forward slash '/' not a backward one '\' ? sorry if i'm missing something. EDIT: yeah i found similar location: Code: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%SystemDrive%/Program Files (x86)/NVIDIA Corporation/coprocmanager/detoured.dll i figured it out now, sorry my bad.
Thank you, wk-952. It is forward slash '/'. The first command-line works great. And the Variable failed. All I want is to set the Variable for tap0901.sys' folder (PATH), like tap0901.inf_amd64_5a1fec2fbbccefcc So I can install new TAP-Windows with the user's own driver. Is it possible? Code: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFi les\%SystemRoot%/system32/DRIVERS/tap0901.sys Source REG_EXPAND_SZ %SystemRoot%\System32\DriverStore\FileRepository\ tap0901.inf_amd64_5a1fec2fbbccefcc\tap0901.sys Press any key to continue . . . ERROR: The system was unable to find the specified registry key or value.
@xinso weird i got the same error too despite the fact that the command line sent to the CMD.exe window is correct (echo on) querying the value is fine but using the output in a for loop causes the problem, so i'll assume the issue is for loop processor/interpreter i'll try to figure a solution to this.
Thank you. wk-952. Is it because of the clause being divided into 2 lines? Code: Source REG_EXPAND_SZ %SystemRoot%\System32\DriverStore\FileRepository\ tap0901.inf_amd64_5a1fec2fbbccefcc\tap0901.sys
@xinso no that only happens visually because the CMD.exe window is a little bit small to expand it: add this line before the for loop Code: mode con lines=25 cols=230
wk-952, Code: @ECHO OFF pushd "%~dp0" mode con lines=25 cols=230 reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%%SystemRoot%%/system32/DRIVERS/tap0901.sys" /v "Source" pause for /f "tokens=* delims=" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%%SystemRoot%%/system32/DRIVERS/tap0901.sys" /v "Source"') do set "val=%%~A" echo %val% pause Code: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%System Root%/system32/DRIVERS/tap0901.sys Source REG_EXPAND_SZ %SystemRoot%\System32\DriverStore\FileRepository\tap0901.inf_amd64_5a1fec2fbbccefcc\tap0901.sys Press any key to continue . . . ERROR: The system was unable to find the specified registry key or value. ECHO is off. Press any key to continue . . . Edit: I got it, wk-952. Code: set E=: for /f "tokens=6 delims=\" %%A in ('"dir /b /s %SystemRoot%\System32\DriverStore\FileRepository | findstr /i tap0901.sys"') do if errorlevel 0 (set E=e&set FOLDER=%%A) %E%cho %FOLDER% pause Code: tap0901.inf_amd64_5a1fec2fbbccefcc Press any key to continue . . . Thanks a lot, wk-952. Now I can install TAP-Windows using user's own one.
@xinso Great work xinso , very nice solution, also if you prefer the 1st non-working loop i found its solution, my doubts were right, the for loop itself does an additional parsing step (in a little bit different way) on its input before letting the CMD.exe process/interpret it; the major difference here between the normal line parser (invoked in any batch file on each line) and the for loop parser is that: - A percentage mark '%' can be escaped with the caret character '^' not with another '%' mark (exactly opposite to the normal line parser). unexpected so here is the final solution: Code: for /f "tokens=2* delims= " %%A in ('reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\^^%%SystemRoot^^%%/system32/DRIVERS/tap0901.sys /v "Source"') do set "TAPdir=%%~B" could you please run this loop in a batch file, then echo the variable %TAPdir% and verify whether this is working as expected or not? my test was based on this loop: Spoiler Code: @echo on for /f "tokens=2* delims= " %%A in ('reg query hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\^^%%SystemRoot^^%%/System32/BthHFSrv.dll /v "owners"') do set "val=%%~B" @echo off echo "%val%" output of the echo command: Code: "bthhfenum.inf" and the command line sent to the CMD.exe window was (this is after being parsed by the normal parser and before being parsed by the for loop parser): Code: for /F "tokens=2* delims= " %A in ('reg query hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\^%SystemRoot^%/System32/BthHFSrv.dll /v "owners"') do set "val=%~B" the down side of this is that we can't wrap the registry location is quotes (reg query "hklm\software...") as it will make the caret character effect-less (non-escaping), but in your case this is not an issue since the reg. location doesn't contain spaces. Hope this helps you more buddy
Hey, nice job. Thank you, wk-952. It is working wonderfully. Code: @ECHO OFF pushd "%~dp0" for /f "tokens=3 delims= " %%A in ('reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\^^%%SystemRoot^^%%/system32/DRIVERS/tap0901.sys /v Source') do (set DIR=%%A) echo %DIR% pause Code: %SystemRoot%\System32\DriverStore\FileRepository\tap0901.inf_amd64_5a1fec2fbbccefcc\tap0901.sys And this is what Compo taught me: Code: @ECHO OFF pushd "%~dp0" for /f "tokens=2 delims==" %%A in ('wmic path SoftwareLicensingService get version /format:list') do (set VS=%%A) echo %VS% set CV=%VS:~,3% echo %CV% pause Code: 6.3.9600.16497 6.3 How to get the value without the file name "tap0901.sys" in Compo's way? Code: %SystemRoot%\System32\DriverStore\FileRepository\tap0901.inf_amd64_5a1fec2fbbccefcc\ Edit: Got it again from "set" command Code: Environment variable substitution has been enhanced as follows: %PATH:str1=str2% would expand the PATH environment variable, substituting each occurrence of "str1" in the expanded result with "str2". "str2" can be the empty string to effectively delete all occurrences of "str1" from the expanded output. "str1" can begin with an asterisk, in which case it will match everything from the beginning of the expanded output to the first occurrence of the remaining portion of str1. Code: @ECHO OFF pushd "%~dp0" for /f "tokens=3 delims= " %%A in ('reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\^^%%SystemRoot^^%%/system32/DRIVERS/tap0901.sys /v Source') do (set DIR=%%A) echo %DIR% echo. set ROUTE=%DIR:tap0901.sys=% echo %ROUTE% pause Code: %SystemRoot%\System32\DriverStore\FileRepository\tap0901.inf_amd64_5a1fec2fbbccefcc\tap0901.sys %SystemRoot%\System32\DriverStore\FileRepository\tap0901.inf_amd64_5a1fec2fbbccefcc\
@ Wk-952 Here are the command lines I use to get NetConnectionID and PNPDeviceID Code: for /f "tokens=2 delims==" %%A in ('"wmic nic where %IX% get NetConnectionID /%FL%"') do (set CI=%%A) Code: for /f "tokens=2 delims==" %%A in ('"wmic nic where %IX% get PNPDeviceID /%FL%"') do (set DI=%%A) Since they use the same syntax, how could we combine them into one command line to get both Variables? like Code: for /f "tokens=2,3 delims==" %%A in ('"wmic nic where %IX% get NetConnectionID, PNPDeviceID /%FL%"') do (set CI=%%A&set DI=%%B) Thanks
@xinso i know from your script that value of %FL% is "/format:list", but i don't know the value of %IX%, could you please provide a sample output of those 2 for loops?
Yes, Wk-652. %IX% => Index=# This seemingly works, but cannot find oemwin2k.inf (installed a second TAP, but not converted to my target TAP-9.0.2.1) Code: FINDSTR: Cannot open oemwin2k.inf TAP-9.0.2.1 has been successfully installed with V. wmic nic where ServiceName='tap0901' get Index pause Code: Index 0 wmic nic where Index=0 get NetConnectionID, PNPDeviceID pause Code: NetConnectionID PNPDeviceID Local Area Connection ROOT\NET\0000 for /f "tokens=1,2 delims= " %%A in ('"wmic nic where Index=0 get NetConnectionID, PNPDeviceID | findstr /i ROOT\NET"') do (set CI=%%A&set DI=%%B) echo %CI% echo %DI% pause Code: Local Area Connection ROOT\NET\0000 Oh ... Traditional Chinese "區域連線" - No space, And "Local Area Connection" - with spaces. Does it matter? Now Code: :NO :-------------------------------------- wmic nic get Index /%FL% | findstr /i Index > "%temp%\Be.txt" if defined Y (call:DT "%RT%\%DIR%\%INF%") else (call:CT "%KQ%\%OA%\OemVista.inf") wmic nic get Index /%FL% | findstr /i Index > "%temp%\Af.txt" for /f "delims=" %%A in ('findstr /v /g:"%temp%\Be.txt" "%temp%\Af.txt"') do (set IX=%%A) :-------------------------------------- for /f "tokens=2 delims==" %%A in ('"wmic nic where %IX% get NetConnectionID /%FL%"') do (set CI=%%A) netsh interface set interface name="%CI%" newname="%TP%" >nul 2>&1 for /f "tokens=2 delims==" %%A in ('"wmic nic where %IX% get PNPDeviceID /%FL%"') do (set DI=%%A) "%KQ%\%OA%\devcon" sethwid @%DI% := =%TP% >nul 2>&1 goto:eof Target, like Code: :NO :-------------------------------------- wmic nic get Index /%FL% | findstr /i Index > "%temp%\Be.txt" if defined Y (call:DT "%RT%\%DIR%\%INF%") else (call:CT "%KQ%\%OA%\OemVista.inf") wmic nic get Index /%FL% | findstr /i Index > "%temp%\Af.txt" for /f "delims=" %%A in ('findstr /v /g:"%temp%\Be.txt" "%temp%\Af.txt"') do (set IX=%%A) :-------------------------------------- for /f "tokens=1,2 delims= " %%A in ('"wmic nic where %IX% get NetConnectionID, PNPDeviceID | findstr /i ROOT\NET"') do (set CI=%%A&set DI=%%B) netsh interface set interface name="%CI%" newname="%TP%" >nul 2>&1 "%KQ%\%OA%\devcon" sethwid @%DI% := =%TP% >nul 2>&1 goto:eof