Board logo

标题: [文本处理] [已解決] 讓 bat 檔案在 UNC 路徑下運行 [打印本页]

作者: nickl    时间: 2013-5-28 15:17     标题: [已解決] 讓 bat 檔案在 UNC 路徑下運行

本帖最后由 nickl 于 2013-5-29 14:47 编辑

各位大大,

小弟有個問題想請教, 小弟想要有條件地將大量檔案移動到不同資料夾
問題在之前已有大俠幫忙解決了.
http://bathome.l3.wuyou.com/viewthread.php?tid=24119

代碼為
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%a in ('dir /b /a-d *AA*.*') do (
  3.     set "str=%%a"
  4.     set "files=!str:~,5!"
  5.     for /f "tokens=*" %%b in ('dir /b /ad "!files!*" 2^>nul') do set "files=%%b"
  6.     md "!files!" 2>nul
  7.     move "%%a"  "!files!"
  8. )
  9. echo sorted
  10. pause
复制代码
小弟現在的問題是, 有辦法讓此代碼在 unc 路徑執行嗎?
假設我的路徑是 \\192.111.1.1\abc\nickl\sort

小弟試過用 set + " ", 但都不行, 不知是否那裡出錯
有大大可以幫忙嗎? 謝謝各位
作者: Batcher    时间: 2013-5-28 16:31

请把你测试的完整代码贴出来看看
作者: nickl    时间: 2013-5-28 16:48

回复 2# Batcher

如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. set site="\\192.111.1.1\abc\nickl\sort"
  3. for /f "tokens=*" %%a in ('dir /b /a-d "%site%" *HK*.*') do (
  4.     set "str=%%a"
  5.     set "files=!str:~,5!"
  6.     for /f "tokens=*" %%b in ('dir /b /ad "%site%" "!files!*" 2^>nul') do set "files=%%b"
  7.     md "!files!" 2>nul
  8.     move "%%a"  "!files!"
  9. )
  10. echo The files have already sorted
  11. pause
复制代码
謝版大
作者: Batcher    时间: 2013-5-28 18:27

回复 3# nickl


把@echo off删掉,看看是哪一行在报错。
作者: plp626    时间: 2013-5-28 23:19

不明真相,
试试
subst Z: "\\192.111.1.1\abc\nickl\sort"
然后访问你的Z:
作者: cutebe    时间: 2013-5-28 23:38

move "%%a"  "!files!"
其中%%a 和 files 都没有具体的路径,只有名字
不知道你是想从UNC复制到本地呢,还是反过来
作者: nickl    时间: 2013-5-29 09:07

回复 6# cutebe
我只是想在unc 路徑中移動檔案
如由 \\192.111.1.1\abc\nickl\sort 移動至 \\192.111.1.1\abc\nickl\sort\01
作者: nickl    时间: 2013-5-29 09:08

回复 4# Batcher
一運行,只閃了一下, 就消失掉了...
作者: Batcher    时间: 2013-5-29 11:11

回复 8# nickl


删除代码中的@echo off
代码保存为C:\test.bat
开始
运行
cmd
C:\test.bat
作者: cutebe    时间: 2013-5-29 11:33     标题: 根据理解的意思大概是这样子,测试好后去掉ECHO,

本帖最后由 cutebe 于 2013-5-29 13:00 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set "site=\\192.111.1.1\abc\nickl\sort"
  3. for /f "DELIMS=" %%a in ('dir /b /a-d "%site%\*HK*.*"') do (
  4.     set "str=%%a"
  5.     set "files=!str:~,5!"
  6.     for /f "DELIMS=" %%b in ('dir /b /ad "%site%\!files!*" 2^>nul') do set "files=%%b"
  7.     ECHO,md "%SITE%\!files!" 2>nul
  8.     ECHO,move "%SITE%\%%a"  "%SITE%\!files!"
  9. )
  10. echo The files have already sorted
  11. pause
复制代码

作者: nickl    时间: 2013-5-29 14:47

cutebe 发表于 2013-5-29 11:33


成功了, 感謝
原來是引用路徑的問題, 每次也要引用




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2