zoukankan      html  css  js  c++  java
  • DOS批处理不支持将UNC 路径作为当前目录的巧妙解决方案

    DOS批处理不支持将UNC 路径作为当前目录的巧妙解决方案
    在有些时候,需要在批处理中操作UNC目录,但批处理并不能直接对UNC目录进行操作,怎么办?

    废话少说,直接上代码,打开网上邻居→整个网络→Microsofi Windows Network→在工作组找到本机对应的电脑,双击测试以下批处理代码:
    显示当前目录.bat
    cd /d %~dp0
    echo %cd%

    pushd %~dp0
    echo %cd%
    popd
    pause

    可以看到,在开始使用cd命令跳转到UNC目录时,会出现"CMD 不支持将 UNC 路径作为当前目录。"的提示,即cd命令只能在本地目录跳转,却不能跳转到UNC目录。

    那如何是好?看第二个命令:pushd,使用"pushd %~dp0"可以将UNC路径映射成本地的Z盘,执行该命令后,下一个提示符就不是原来的C:>,而是Z:>,即已经映射成功的UNC路径。

    这时,就可以像操作本地目录一样操作UNC目录了(实际上在“我的电脑”中会出现一个Z盘的映射,相当于本地硬盘)。如图中所示,cd、dir等命令均可以使用。

    最后,在执行完操作后,别忘了使用popd将映射断开。断开后,提示符又变成了原来的C:Windows>。

    另外一个更好的解决办法:直接在批处理所在的目录前面加上变量%~dp0即可。无论是调用批处理名字,还是拷贝,都可以。
    但是要注意,一般地文件共享是只读共享,UNC目录不可写,因此echo >file1.txt这样的语句,fiel1.txt前面不要加%~dp0,默认用C:windows目录即可。
    @echo off
    %~dp0booticeBOOTICEx86 /DEVICE=0 /mbr /install /type=GRUB4DOS /v045 /boot_file=grldr /quiet
    echo n|copy /-y %~dp0grubgrldr.* %systemdrive%
    echo n|copy /-y %~dp0grubmenu.lst %systemdrive%
    attrib +h %systemdrive%grldr.*
    attrib +h %systemdrive%menu.lst
    ECHO ┌─────────────────────────────────┐
    ECHO │已经把grub4dos写入硬盘MBR! 按任意键退出。 │
    ECHO └─────────────────────────────────┘
    pause >nul

  • 相关阅读:
    HashMap按键排序和按值排序
    LeetCode 91. Decode Ways
    LeetCode 459. Repeated Substring Pattern
    JVM
    LeetCode 385. Mini Parse
    LeetCode 319. Bulb Switcher
    LeetCode 343. Integer Break
    LeetCode 397. Integer Replacement
    LeetCode 3. Longest Substring Without Repeating Characters
    linux-网络数据包抓取-tcpdump
  • 原文地址:https://www.cnblogs.com/liuzhaoyzz/p/6037389.html
Copyright © 2011-2022 走看看