1

Windows XP を実行している場合に、ドメイン内のすべてのコンピューターにフォルダーをコピーするバッチ ファイルを作成しようとしています。私はこれを持っています:

for /f "Tokens=1 delims=$" %a in ('dsquery * domainroot -limit 300 -filter "(&(objectCategory=computer)(operatingSystem=Windows XP*))"^| dsget computer -samid^|find /V "samid" ^| find /V "dsget"') do ( robocopy \\fserver\programs\ "\\%a\C$\Documents and Settings\All Users\Application Data\" /s /R:1 /W:1)c

問題は、実行時にコピー先の場所のコンピューター名の前にスペースが追加されることです。例えば:

Error accessing Destination Directory \\ HP-0D9F\C$\Doc...

スペースをなくすにはどうすればよいですか?

4

2 に答える 2

1

dsquery少し変更すると、余分なスペースを削除できます。dsgetこれにより、余分なものを使用する必要がなくなるfindため、実行が少し速くなるようです。このコマンドは、すべての Windows XP コンピュータのドメインを照会し、各コンピュータの「名前」を取得し、結果をフィルタ処理して出力から列見出しを削除し、各コンピュータの名前を出力します。

for /f %i in ('dsquery * domainroot -limit 300 -filter "(&(objectcategory=computer)(operatingsystem=Windows XP*))" -attr name ^| find /v /I "name"') do @echo %i

ここで、robocopy コマンドをdo1 行のコマンドとして実行できる後に追加するだけで、バッチ ファイルを作成する必要がなくなります。

于 2014-02-07T15:51:45.080 に答える