【问题标题】:Batch File Iterating through files on a local network server批处理文件迭代本地网络服务器上的文件
【发布时间】:2013-01-08 09:47:08
【问题描述】:

我正在尝试使用这段批处理代码打开存储在本地网络服务器上的各种文件:

for /f "tokens=*" %%G in ('dir /b /a:d "\\server\directory\*"') do %%G\setup.xml

但是由于dir \\server\directory 不起作用,所以那段代码也不起作用。
我怎样才能做到这一点?

提前谢谢你

【问题讨论】:

  • 为什么不改用powershell?

标签: windows networking command-line batch-file


【解决方案1】:

您可以使用映射驱动器

net use X: \\server\directory

然后您可以使用

切换到该目录
pushd X:

然后您可以在当前目录上运行批处理命令,当您完成并且文件不再使用时,您可以使用删除驱动器

net use X: /delete

【讨论】:

  • 感谢您的回答。我想过这一点,但由于我必须编辑正在打开的文件,所以我不能在for 循环之后立即执行popd ......但我仍然想在完成编辑后删除虚拟磁盘文件。我怎样才能做到这一点?可能是两个单独的批处理文件?
  • 抱歉,我不太明白您要做什么。你会用 2 个批处理文件做什么?
  • 编辑完打开的文件后,我想清除pushd制作的虚拟磁盘
  • 对了。是的,试试net use X: \\server\dir,然后你可以随时删除它net use X: /delete,而只需`pushd X:`。
  • 哦,对了,它没有要求我,它只是做了。试试echo y| net use X: /delete
【解决方案2】:

你写:

因为 dir \server\directory 不起作用

起初我想说这确实有效。但真正有效的是:

dir \\server\sharename

服务器必须共享目录。在服务器上,您可以使用如下命令:

net share public=c:\public

你应该能够:

dir \\server\sharename

【讨论】:

  • 感谢您的回答。我明白你的意思......不幸的是我不能直接从服务器运行命令。我只能访问这些文件。
  • 所以服务器已经通过共享名提供了文件?我想让您知道,在我的系统上,我可以毫无问题地运行您的示例(好吧,我将其更改为 echo %%G,工作正常)。也许您正在运行的程序不会通过共享名访问文件。
  • 如果我明白你对共享名的意思,不。要访问文件,我转到“网络”并等待共享计算机出现,当服务器出现时,我双击它并浏览它。
猜你喜欢
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 1970-01-01
  • 2015-05-27
  • 2021-02-23
  • 1970-01-01
相关资源
最近更新 更多