2

私は、本質的に何も考えられておらず、スクリプトの修正を検索/調査する必要がある宿題のスクリプト割り当てを完了しようとしています。私が実行する必要があるスクリプトは、3 列 (名前、ID、部門) のファイル (私が提供したもの) を調べ、新しいグループとユーザーを作成し、ユーザーを正しいグループに割り当てることになっています。各グループは一度しか作成できません。私の問題は、トークンで FOR /f コマンドを使用することです。

ファイル 1

@ECHO OFF

SET /p userfFile="what is the file that contains new hires: "

REM Loop through the lines of the file
REM and copy the the department names to a new file
FOR /f "tokens=3 skip=4" %%b IN (%userfFile%) DO ECHO %%b >> Department.txt

REM sort the file back into itself
sort Department.txt /0 Department.txt

REM a variable to keep track of the groups that have neen created 
SET LastGroupCreated=None

FOR /f %%a IN (Department.txt) DO CALL CUG

FOR /f "tokens=2,3 skip=4" %%A IN (%userfFile%) DO CALL

REM Clean Up
DEL Department.txt
SET userfFile= 

ファイル2「CUG」

REM Have we already processed this name (%1) ?
IF "%LastGroupCreated%"=="%1" GOTO :EOF

REM Not Processed, so create and update the variable
NET LOCALGROUP /ADD %1
SET LastGroupCreated=%1

ファイル CUG は問題ないと思いますが、ファイル 1 ではエラーが発生し続けます。誰かがこれで私を助けることができれば、本当に感謝しています。考えられることはすべて試しましたが、行き詰まっています

乾杯

ジェームズ

4

1 に答える 1

0

いくつかの間違い:

FOR /f %%a IN (Department.txt) DO CALL CUG

  1. CUGこれでは、パラメーターなしで呼び出しますが、使用します%1CUG別のファイルの代わりにサブルーチンを作成し、パラメータを に渡す必要がありますCUG
  2. CUG再利用するファイルでは、ファイルの先頭にある%LastGroupCreated%必要がありSETLOCAL NABLEDELAYEDEXPANSIONます。
  3. FOR /f "tokens=2,3 skip=4" %%A IN (%userfFile%) DO CALL- 何を呼ぶ?


@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
...
FOR /f %%a IN (Department.txt) DO CALL :CUG %%a
...
goto :eof

:CUG
REM Have we already processed this name (%1) ?
IF "!LastGroupCreated!"=="%1" GOTO :EOF

REM Not Processed, so create and update the variable
NET LOCALGROUP /ADD %1
SET LastGroupCreated=%1
goto :eof
于 2012-11-29T07:00:00.567 に答える