Jump to content

jaclaz

Member
  • Posts

    21,291
  • Joined

  • Last visited

  • Days Won

    53
  • Donations

    0.00 USD 
  • Country

    Italy

Posts posted by jaclaz

  1. @Mhz

    Yes, you summed up what I wanted to say.

    The big difference is that different Dos/windows see only some kind of partitions, so ignores the one it doesn't know anything about, quick reminder:

    Dos and Windows 95 1st edition ->FAT16 only

    NT 3.51 and 4.00 -> FAT16 and NTFS (v4.00?)

    Windows 95 OEM2, 98 and ME ->FAT 16 and FAT32

    Windows 2000/XP/2003 ->FAT16, FAT32 and NTFS(v.5.00?, automatically convert older v4.00 partitions to v.5.00 without asking the user)

    The rule of the thumb if you want/need more than one OS on the same machine,are the following:

    1) always install operating system in the order of their age (older first)

    2) avoid having more than one Primary partition on 1st hard drive, if possible, or use a Boot Manager to hide other Primary partitions, if the operating system can read it (i.e. if you have DOS on the 1st active Primary partition and you install NT on another primary partition on 1st Hard Disk, you have no problem if the latter is NTFS, as Dos cannot read it, if the latter is FAT 16, you could get problems)

    3) avoid to have Primary partitions on 2nd, 3rd, etc. Hard Drives, or , better, make on them a small FAT 16 Partition and Hide it with a BootManager, for recovery purposes only.

    @big_gie

    Though it SHOULD be safe, it is always better to have a backup, though I know how it is difficult to make backups with these big drives and all the things we put in it.

    A "Safer" method, if you have roughly 1/3 of the HD free, is to :

    1) Defrag the partition

    2) Use Acronis to reduce partition size to a minimum

    3) Use Acronis to make a new Logical partition in the thus freed space

    4) Use Acronis to image the partition on the newly created Logical (images are compressed, if your original files are not all zipped or JPG, you probably will get 50% size)

    5) Use Acronis to convert Primary partition to logical

    6) If all went well delete the Logical Partition with the image

    I used Acronis quite a lot, and it never failed me, but Murphy's law is always around!

    P.S. If you do not have an UPS, don't even THINK of doing this!

    jaclaz

  2. @crahak

    You are perfectly right in saying that choice.com is the most logical solution, and again you are right when you say that it is not possible to mimic the choice.com behaviour by batch commands only.

    Still, it is possible if you can use a small portion of VBScripting.

    The example I posted is, as said, a poorman's possibility, nothing more, it does work, you need to press Control+C to break the execution to be able to send the Yes or No.

    @Thauzar

    not sure I understant how this works but I trust you it does, I just want to clarify my understanding of the method.

    You said:

    QUOTE 

    l.1 IF "%1"=="Y" GOTO Yes

    l.2  IF "%1"=="N" GOTO No

    l.3  ECHO Yes or No? Press Y or N followed by the Enter key . . .

    l.4  ECHO DEFAULT ANSWER IN ABOUT 10 seconds will be YES....

    l.5  ECHO @%0 Y > Y.BAT

    l.6  ECHO @%0 N > N.BAT

    l.1 if a variable named %1 exists and is equal to Y then it goes to yes

    l.2 if a variable named %1 exists and is equal to N then it goes to no

    BUT where does this variable come from? and where does the Y or N comes?

    l.3 only at this moment we are asking the user to pres Y or N, and where is this information going? how is it related to the %1 variable seen before?

    l.5 and 6 are chineese to me and I really don't know why they are there.

    When you call the .bat the first time, you do so without passing parameters, so the I.1 and I.2 are just ignored.

    I.3 and I.4 are just messages to the user and can be changed.

    I.5 and I.6 are the interesting part, let us take I.5 for example:

    the command ECHO @%0 Y > Y.BAT does the following:

    1) The echo sends everything until the > to the object on the right of the >, so it actually creates a file named Y.BAT and writes in it

    2) the @ is just as hte Echo Off command

    3) the %0, parameter 0, is the name of the batch file is executing, in this case YN

    4) Y is the 1st parameter passed

    5) So you are actually creating a batch file called y.bat that invokes your original batch (YN) passing the Y as 1st parameter.

    6) When you input Y followed by enter, you execute this Y.BAT file, calling YN.BAT and feeding it with the Y, that this time is filtered by I.1, and so the result is going to the :Yes label.

    I.6 does the same for No.

    Hope the above is clear enough.

    One note, in using choice, you should make a trap to make sure that the user does not press a letter different from Y or N.

    A good example is here:

    http://www.ericphelps.com/batch/samples/sleep.txt

    jaclaz

  3. To finalize the matter, here are other methods by Tino Salmi, NT/2000/XP only:

    http://www.uwasa.fi/~ts/http/http2.html#cmdscript

    including a vbs one

    From ts@uwasa.fi Tue Aug 10 01:00:19 2004
    Subject: 19) How can one build a delay / sleep / wait procedure for a script?
    Date: Tue, 10 Aug 2004 01:00:19
    From: ts@uwasa.fi (Timo Salmi)

     @echo off
     setlocal enableextensions
     echo %time%
     call :ProcDelay 250
     echo %time%
     goto :EOF

     :ProcDelay delayMSec_
     setlocal enableextensions
       for /f "tokens=1-4 delims=:. " %%h in ("%time%") do set start_=%%h%%i%%j%%k
       :_procwaitloop
         for /f "tokens=1-4 delims=:. " %%h in ("%time%") do set now_=%%h%%i%%j%%k
         set /a diff_=%now_%-%start_%
       if %diff_% LSS %1 goto _procwaitloop
     endlocal & goto :EOF

    The output e.g:
     D:\TEST>cmdfaq
     10:30:49.84
     10:30:52.34

    There is another, makeshift alternative, but it requires that the PC
    has TCP/P. For a two second delay one can try to ping oneself as
    follows
    @echo off
    ping -n 3 127.0.0.1>nul
    which would produce e.g.
     D:\TEST>cmdfaq
     15:24:47.57
     15:24:49.62
    As you see, it is not dead accurate. Not that it is essential.

    Furthermore, you could have
     @echo off & setlocal enableextensions enabledelayedexpansion
     echo WScript.Sleep 1000 > %temp%\tmp$$$.vbs
     echo %time%
     cscript //nologo %temp%\tmp$$$.vbs
     echo %time%
     for %%f in (%temp%\tmp$$$.vbs) do if exist %%f del %%f
     endlocal & goto :EOF
    which would produce e.g.
     D:\TEST>cmdfaq
     13:13:03.00
     13:13:04.07

    I tried a Google search for "timeout", but found the above searching for "delay"....

    :whistle:

    jaclaz

  4. I am sorry you take it like this:

    If you use choice.com, you have the delay built in in the command.

    The point was to have the result without having choice.com, the idea was to have this:

    @ECHO OFF
      IF "%1"=="Y" GOTO Yes
      IF "%1"=="N" GOTO No
      ECHO Yes or No? Press Y or N followed by the Enter key . . .

      ECHO DEFAULT ANSWER IN ABOUT 10 seconds will be YES....

      ECHO @%0 Y > Y.BAT
      ECHO @%0 N > N.BAT

    ::The timing is non exact, the 10000 is roughly 10 seconds
    PING 1.1.1.1 -n 1 -w 10000 > NUL
    GOTO YES

      GOTO End
      :Yes
      ECHO.
      ECHO You answered Yes
      GOTO End
      :No
      ECHO You answered No
      :End
    if exist y.bat del y.bat
    if exist n.bat del n.bat

    If you try it, you will see that it works.

    As Rob puts it, you can use it in emergency only, but it is still a good example of batch "sideways" scripting.

    jaclaz

  5. If you do not want to "spoil" your new M$ OS with older files, like choice.com, you could use this workaround, as found on Rob van der Woude excellent page:

    http://www.robvanderwoude.com/index.html

       @ECHO OFF
       IF "%1"=="Y" GOTO Yes
       IF "%1"=="N" GOTO No
       ECHO Yes or No? Press Y or N followed by the Enter key . . .
       ECHO @%0 Y > Y.BAT
       ECHO @%0 N > N.BAT
       GOTO End
       :Yes
       ECHO You answered Yes
       GOTO End
       :No
       ECHO You answered No
       :End

    but still you have the problem of waitibg 60 seconds, which can be done with this other PING trick:

    For any MS-DOS or Windows version wit a TCP/IP client, PING can be used to delay execution for a number of seconds.
    If specified (-w switch), PING will wait for a number of milliseconds between two PINGS before giving a time-out.


    PING 1.1.1.1 -n 1 -w 60000 >NUL
    will delay execution of the next command 60 seconds, provided 1.1.1.1 is not a valid IP address (I previously used -n 60 -w 1000 which should theoretically result in the same delay, but as Greg Hassler pointed out this may be highly inaccurate on some computers).

    found here:

    http://www.robvanderwoude.com/wait.html

    jaclaz

  6. yep,

    but you see, the problem is that you CANNOT run gdisk from within XP, so you can boot to the DOS partition, hide or unhide it, but next time you boot, if you have hidden it, you cannot SEE it! and if you setup the system as depicted above you won't even get to boot.ini, because it would reside on a hidden partition!

    That's why you need a bootmanager that can hide/unhide partitions BEFORE any Operating System is loaded.

    jaclaz

  7. @prathapml

    Yep,

    I borrowed some ideas here and there, most probably is not well worded, legally speaking, but it is how I feel free software should be....

    ...and how people should behave.

    :thumbup

    Besides it seems like it worked for you, even without actually USING the proggie!

    :D

    jaclaz

  8. Well, according to Microsoft, if you are not on theirs OEM/ENTERPRISE/IT PROFESSIONAL list you are not even allowed to KNOW it exists!

    Ok, just joking, here is the story:

    http://www.microsoft.com/licensing/program...port/winpe.mspx

    In plain words, it is not a Public Release, nor you can buy it, unless you qualify for the above.

    Windows PE is more or less a stripped down version of Windows XP/Server2003 that can run from CD-ROM, it is useful for these uses, mainly:

    - accessing a dead system

    - data recovery

    - data forensics (but there are much better tools)

    - first install of windows on new PC

    - make a windows live-CD, like Knoppix or Morphix do for Linux

    Luckily enough, this wonderful guy, Bart Lagerweij, has found a way to recreate a very similar environment:

    http://www.nu2.nu/pebuilder/

    with ordinary files you can have legally.

    Go to Bart's page above to get everything you need apart your own LICENSED copy of Windows XP/Server 2003.

    Then, build your 1st basic copy of Bart's PE, play a little with it, and come back to this forum to learn how you can better, fine tune and customize it.

    Hope the above clears the matter, please correct me where I am wrong.

    jaclaz

  9. I see,

    the problem it's this, as you don't want ANY 3rd party bootmanager,

    the partition can be seen by "NORMAL" Windows XP:

    a DOS parttition, to be bootable, MUST be :

    A) ACTIVE

    B) the 1st partition on the 1st hard drive

    So you can partition your drive with a small PRYMARY FAT16 partition and one (or more) huge partitions (either FAT32 or NTFS), which actually is the way that Gilles Vollant, author of bootpart, recommends and that I have used for years without any trouble:

    "C :" FAT 16 PRIMARY on which resides:

    MSDOS.SYS

    IO.SYS

    COMMAND.COM

    BOOT.INI

    NTLDR

    NTDETECT.COM

    Autoexec.bat

    config.sys

    Ghost.exe

    ...all other imaging/rescue programs, including BOOTPART

    boot.ini has two entries:

    C:\BOOTSECT.DOS="Reimage Drive"

    multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows XP Professional" [followed by any switch you might use]

    Rest of the disk is a big EXTENDED parttion in which you have at least one FAT32/NTFS partition

    "D :"

    to which you install Windows XP

    2) If you want a REAL recovery partition, i.e. that is normally HIDDEN, you need to find a way to HIDE/UNHIDE it at will, which means that you need a 3rd party bootmanager.

    I do recommend you XOSL, which you can find on Ranish's page and that is:

    -FREEWARE

    -GRAPHICAL

    -PASSWORD PROTECTED if needed

    jaclaz

  10. Sorry, I don't get it:

    if you want to create a "recovery" partition on a HARD DRIVE, you should use a program like Ranish's Partition Manager, http://www.ranish.com/part/

    if you want to create a bootable CD option, you can make an Image of a bootable FLOPPY with autoexec.bat and ghost.exe or whatever, and add it to whatever bootcd menu you use.

    BOOTPART is a program that helps in the creating/modifying of boot.ini, and optionally can create bootsectors for various OS's, it does nothing to PARTITIONS.

    Please post again explaining better what you want to achieve.

    jaclaz

  11. As you might know, there is this Virtual Disk Driver from Ken Kato:

    http://chitchat.at.infoseek.co.jp/vmware/vdk.html

    that allows to mount to a Drive letter, Disk Image files made with VMWare, plus a few more types.

    The driver is a real must have for anyone using VMWare Disk Image files, but being command-line only it is sometimes awkward to use.

    I just wrote Virtual Drive Manager, a GUI interface to the driver that makes its use much simpler.

    It is version 0.9 Beta now.

    I would like to have comments, suggestions, bug reports from VMWare users.

    You can find Virtual Drive Manager here:

    http://home.graffiti.net/jaclaz:graffiti.n...ts/VDM/vdm.html

    jaclaz

  12. ... or you could Dynamically find the Letter assigned to cd-rom drive in the Registry, using something like this:

    :: For Windows 2000/XP
    SETLOCAL
    SET CDROMS=
    ::Following tempfilenames are just arbitrary
    SET Temp1=%Temp%.\tempcd1.$$$
    SET Temp2=%Temp%.\tempcd2.$$$
    START /WAIT REGEDIT /E %Temp1% "HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices"
    TYPE %Temp1% > %Temp2%
    TYPE %Temp2% | FIND "\\DosDevices\\" | FIND /V "\\DosDevices\\A:" | FIND "=hex:5c," > %Temp1%
    FOR /F "tokens=3 delims=\:" %%A IN (%Temp1%) DO CALL :ParseW2K %%A
    SET CDROMS
    DEL %Temp1%
    DEL %Temp2%
    ENDLOCAL & SET CDROMS=%CDROMS%
    GOTO:EOF

    :ParseW2K
    IF DEFINED CDROMS (SET CDROMS=%CDROMS%,%1:) ELSE (SET CDROMS=%1:)
    GOTO:EOF

    found on this excellent batch file page, slightly edited to make it simpler:

    http://www.robvanderwoude.com/amb_cdrom.html#CdRom2

    http://www.robvanderwoude.com

    jaclaz

  13. Well, Bochs is not really a Virtual Machine, but rather an Emulator.

    i.e. Virtual Machines, like VMWare or Connectix/Microsoft Virtual PC, simulate an actual "Hardware PC", you see the boot screen, you actually install a video card driver for the hardware it simulates, and so on.

    Bochs is more like a software layer.

    Hope the above makes some sense, however fact is that BOCHS is really slow.

    If you plan to run on the virtual machine a simple OS, like DOS, and you have an average PC, it is ok, if you want to run WinXP inside the virtual thingy, you better get yourself either VMWARE or VIRTUAL PC. (I prefer the first over the latter, but it's just personal).

    Before buying either, try Virtual PC, there is a downloadable time limited version.

    If you want to have a try with BOCHS, why don't you try with REACTOS,

    http://www.reactos.com/

    If you want to run DOS in an emulator, try also DOSBOX,

    http://dosbox.sourceforge.net/

    though it has been developed for games, quite a lot of software runs in it.

    jaclaz

  14. I don't know if this is what you want, but this is how I resolved the problem the "third" way.

    I simply put aside M$ own RAMDRIVE.SYS, replacing it with Franck Uberto's XMSDSK.EXE.

    (you can find it everywhere on the net as furd19u_i.zip)

    The good things are:

    1) no 32 Mb limit in Ramdisk size

    2) possibility to assign a letter from command line

    This way I don't need to find which drive letter, I just map it to R: and go on.

    Hope the above helps.

    jaclaz

  15. Yes it is quite a complex thing, maybe this example, taken from Rob van der Woude excellent site helps in clarifying the matter:

    Finally, support for delayed environment variable expansion has been
    added.  This support is always disabled by default, but may be
    enabled/disabled via the /V command line switch to CMD.EXE.  See CMD /?

    Delayed environment variable expansion is useful for getting around
    the limitations of the current expansion which happens when a line
    of text is read, not when it is executed.  The following example
    demonstrates the problem with immediate variable expansion:

       set VAR=before
       if "%VAR%" == "before" (
           set VAR=after;
           if "%VAR%" == "after" @echo If you see this, it worked
       )

    would never display the message, since the %VAR% in BOTH IF statements
    is substituted when the first IF statement is read, since it logically
    includes the body of the IF, which is a compound statement.  So the
    IF inside the compound statement is really comparing "before" with
    "after" which will never be equal.  Similarly, the following example
    will not work as expected:

       set LIST=
       for %i in (*) do set LIST=%LIST% %i
       echo %LIST%

    in that it will NOT build up a list of files in the current directory,
    but instead will just set the LIST variable to the last file found.
    Again, this is because the %LIST% is expanded just once when the
    FOR statement is read, and at that time the LIST variable is empty.
    So the actual FOR loop we are executing is:

       for %i in (*) do set LIST= %i

    which just keeps setting LIST to the last file found.

    Delayed environment variable expansion allows you to use a different
    character (the exclamation mark) to expand environment variables at
    execution time.  If delayed variable expansion is enabled, the above
    examples could be written as follows to work as intended:

       set VAR=before
       if "%VAR%" == "before" (
           set VAR=after
           if "!VAR!" == "after" @echo If you see this, it worked
       )

       set LIST=
       for %i in (*) do set LIST=!LIST! %i
       echo %LIST%

    see

    http://www.robvanderwoude.com/index.html

    for more

    jaclaz

  16. I feel like thinking that roy1984 was more looking for this:

    Disable the Ability to Right Click on the Desktop (All Windows)
    This tweak removes the context menu that would normally appear when the user right clicks on the desktop or in the Explorer right results pane.

    Open your registry and find or create the key below.

    Create a new DWORD value, or modify the existing value, called "NoViewContextMenu" and set it according to the value data below.

    Exit your registry, you may need to restart or log out of Windows for the change to take effect.

    Registry Settings
    User Key: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\
    Explorer]
    System Key: [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\
    Explorer]
    Value Name: NoViewContextMenu
    Data Type: REG_DWORD (DWORD Value)
    Value Data: (0 = disabled, 1 = enabled)

    found here:

    http://www.winguides.com/registry/display.php/160/

    jaclaz

  17. Well, Ranish likes to play it safe, he had for something like one year version 2.38 Beta, then he just renamed it to 2.40 stable.

    I have used both 2.40 and 2.43 beta with no problems whatsoever, actually the only (I think) difference, it is the number of partitions:

    Version 2.37: can help you have 30 primary partitions but does not

    work with disks having a capacity greater than 8GB.

    Version 2.40: can work with disks > 8GB but does not support more than

    4 primary partitions (this is same as version 2.38 but just the version number

    got changed)

    Version 2.43: can work with disks > 8GB; also, it can support up to

    30 primary partitions.

    As I would never want to have more than 4 Primary Partitions, I stay on 2.40.

    Never tested 2.44 BETA-BETA-BETA

    jaclaz

  18. It looks like you have a problem here:

    %RAMD%:\extract /y /e /l %RAMD%: ebd.cab > NUL

    it looks like RAMD is empty, make sure that BEFORE you assign a drive leteer to RAMD, like this:

    SET RAMD=X:

    then, I think you have a problem with

    "\" and ":"

    If RAMD = something like X: you do not need the :

    If RAMD = something like X:\ you do not need the \

    If RAMD = something like X you miss a \ in the second part.

    Moreover I do not think that EXTRACT.EXE is ALREADY on RAMD!

    Assumed that RAMD is something like X your line should be:

    extract /y /e /l %RAMD%:\ebd.cab > NUL

    jaclaz

×
×
  • Create New...