为每个脚本实例创建文件

时间:2016-01-28 09:58:20

标签: windows batch-file command-prompt

我已经使用linux工具DU创建了下面的脚本以获取C:\ Users的文件夹大小。该脚本通过GPO分发给所有用户。

xcopy \\0.0.0.0\netlogon\gnu-core-utils\du.exe C:\profile-size-script\ /i /s /Y
xcopy \\0.0.0.0\netlogon\gnu-core-utils\libintl3.dll C:\profile-size-script\ /i /s /Y
xcopy \\0.0.0.0\netlogon\gnu-core-utils\libiconv2.dll C:\profile-size-script\ /i /s /Y
C:
cd C:\profile-size-script
du -hs C:\users\* > \\0.0.0.0\userfolder\%username%.txt

线条说明如下:

  1. 将名为du.exe的文件复制到位置C:\ profile-size-script
  2. 将名为libintl3.dll的文件复制到同一位置。
  3. 复制名为libiconv2.dll的文件
  4. 更改为驱动器C:以防cmd从不同的驱动器号开始。
  5. 更改为相同的文件夹大小
  6. 使用DU获取文件夹大小并将输出回显到\ 0.0.0.0 \ userfolder \%username%.txt。
  7. 问题是这个脚本没有为每个用户创建一个新文件,而是附加了第一个创建的文件%username%.txt

2 个答案:

答案 0 :(得分:2)

我认为你正在做这样的事情:

xcopy \\0.0.0.0\netlogon\gnu-core-utils\du.exe C:\profile-size-script\ /i /s /Y
xcopy \\0.0.0.0\netlogon\gnu-core-utils\libintl3.dll C:\profile-size-script\ /i /s /Y
xcopy \\0.0.0.0\netlogon\gnu-core-utils\libiconv2.dll C:\profile-size-script\ /i /s /Y
cd /d C:\profile-size-script
for /d %%u in (c:\users\*) do (du -hs C:\users\* > \\0.0.0.0\userfolder\%u%.txt)

FOR /D循环读取每个文件夹,并为找到的每个文件夹(du.exe)执行%%u命令。查看FOR /?以获取更多信息和其他可能性。

附加说明:CD /D命令允许您同时更改驱动器号和目录。或者,如果您运行命令而不使用显式路径更改目录,则可以完全跳过C:CD行:

xcopy...
for /d %%u in (c:\users\*) do (
    C:\profile-size-script\du.exe -hs C:\users\* > \\0.0.0.0\userfolder\%u%.txt)

答案 1 :(得分:0)

我通过创建新文件解决了这个问题,因为建议的答案是为C:\ users *中的每个文件夹创建一个txt文件。

xcopy \\0.0.0.0\netlogon\gnu-core-utils\du.exe C:\profile-size-script\ /i /s /Y
xcopy \\0.0.0.0\netlogon\gnu-core-utils\libintl3.dll C:\profile-size-script\ /i /s /Y
xcopy \\0.0.0.0\netlogon\gnu-core-utils\libiconv2.dll C:\profile-size-script\ /i /s /Y
cd /d C:\profile-size-script
copy NUL \\0.0.0.0\userfolder\%username%.txt
du -hs C:\users\* > \\0.0.0.0\userfolder\%username%.txt

每次运行脚本时,它都会复制一个NUL文件并根据登录用户重命名,这对我来说很有用。但我确实将C:替换为cd /d(更改了驱动器和目录)。